@densaface

Почему селениум не находит определенный локатор на странице?

Более полугода неспешно боролся с нижеописанным багом в своих тестах и даже не смог прийти к какому-то рациональному обяъснению происходящему.

Итак, полностью в автоматическом режиме выполняются тесты на 2ух машинах, клиенте и селениум сервере, в котором в браузере загружается некий контент, ищутся по локаторам элементы веб интерфейса, нажимаются веб кнопки, чекбоксы и пр.

Проблема воспроизводится где-то в каждом пятом случае минимум, в определенном месте определенного тесткейса не находится элемент по локатору, а вернее кнопка delete

точное имя локатора:
//div[@class="listActionItem" and text()='delete']

Причем 3мя разными способами убеждался что такая кнопка присутствует:
1. Визуально на скриншоте эта кнопка видна
2. В отладчике добился воспроизведения и пошагово убедился, что кнопка присутствует и находится по вышеприведенному имени локатора ( с помощью плагина firebug в файерфоксе)
3. Сделал в тесте на этом шаге скидывание всего исходного html кода страницы в отдельный лог файл и убедился, что элемент с данным локатором присутствует

После неудачных попыток разобраться в чем проблема, решил сделать топорно воркэраунд, вставка пауз, повторные рефреши страниц, попытка вернуться на предыдущую страницу и зайти на проблемную заново, все это не решило проблему.

Непонятно почему именно эта кнопка оказалась проблемной, в тесте используется десятки других кнопок в том числе и delete на других страницах и нигде не было подобных проблем.

Непонятно почему проблема воспроизводится рандомно, т.е. по идее это говорит, что проблема не в имени локатора.

Кто какие новые идеи может предложить моему отчаявшемуся мозгу?
  • Вопрос задан
  • 1845 просмотров
Пригласить эксперта
Ответы на вопрос 1
@southsoutheast
Мне интересно.
были похожие проблемы с watir-webdriver (реализация селениума на ruby).
в каждом случае вероятные причины и решения были разные, поэтому не в качестве универсального решения, а как идеи, что еще попробовать:
  • элемент находится в таблице или фрейме - помогает явно указать сначала таблицу/фрейм, потом уже идентификатор элемента;
  • таких элементов находится несколько (несколько раз перерисовывалась страница, старые кнопки скрывались - не спрашивайте меня, зачем, это не я), и находится первый, как раз невидимый - уточнить запрос так, чтоб находился активный;
  • просто элемент не находится по классу и непонятно, почему - попробовать найти по другим атрибутам (id, name, value, xpath и т.д).
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽