JastaFly
@JastaFly

Selenium поиск элементов по классу?

Есть проект на Selenium + PHP, пытаюсь в нем разобраться. Так вот если искать элемент через селектор по классу:
$elem = WebDriverBy::className('somethingClass');
$chrome->findElement($elem)->click();

То клик по нему не пройдёт, и я получу ошибку:
Facebook\WebDriver\Exception\ElementNotInteractableException: element not interactable

Так вот что не так?!?? И как правильно работать с подобным селектором, ведь элементов с одинаковым классом может быть множество, а провзаимодействовать мне нужно всего с одним?!?? Как выбрать нужный?!?
Можно ли как-то посмотреть результаты работы селектора (className в данном случае), просто этот метод возвращает особый объект, который потом принимает метод findElement и понять из него сколько и каких элементов он нашёл невозможно
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
iMedved2009
@iMedved2009
Не люблю людей
Элемент не готов к тому что бы по нему кликнули. Это может быть по сотне причин - он перекрыт попапом, он не показывается, он не ссылка и так далее.
Вы можете в ожиданиях прописывать ожидание готовности WebDriverExpectedCondition::elementToBeClickable(). Использовать более сложную выборку что бы убедится что выбираете точно тот элемент WebDriverBy::cssSelector('div someDiv a.someClass') и так далее.
Результаты работы селектора можно посмотреть через getAttribute. Ну а вообще стоит делать скриншоты при эксепшенах что бы видеть что у вас на странице в текущий момент.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы