Перейти к содержимому

ninfe@

Регистрация: 03 ноя 2010
Offline Активность: 19 янв 2016 06:43
-----

#116848 WebDriver работа с выпадающим меню

Написано ninfe@ 10 апреля 2013 - 07:46

Да, дело в траектории движения мыши.
moveToElement передвигает указатель от ценра элемента "Ходожественные фильмы" к центру элемента "Короткометражный ходожественный фильм". На рис. 3 видно, что прямая соединяющая центры этих элементов проходит через "Документальные фильмы".

Сложность тестирования, вероятно, связана с некорректной реализацией иерархического меню. Ваше меню не использует эффект запаздывания (setTimeout в javascript), либо запаздывание слишком мало.

Используйте в реализации меню эффект запаздывания, или более удобно организуйте работу с выбором элементов следующего уровня (как в Amazone).
Для сравнения меню с запаздыванием и меню без запаздывания (но при этом рабочего, более удобного) можете обратиться к статье Загадка выпадающего списка «Амазона»: http://habrahabr.ru/post/171905/

Или в тесте нужно передвигать указатель не по прямой соединяющей центры пунктов, а по кривой, не задевающей другие элементы (но пользователи не будут так делать, и сложный дизайн не будет пользоваться популярностью).
Кривая следующая (вправо по горизонтали и, возможно, вниз по вертикали):
moveToElement(пункт меню)
moveToElement(первый пункт подменю)
moveToElement(нужный пункт подменю)
click(нужный пункт подменю)


Извиняюсь, что так долго молчала.
Спасибо за ответ и за подсказку.

Действительно Selenium двигается по кратчайшему пути, поэтому в моем случае он захватывает не нужные пункты меню.
Если работать вот так
moveToElement(пункт меню)
moveToElement(первый пункт подменю)
moveToElement(нужный пункт подменю)
click(нужный пункт подменю)

то все работает как надо.

И кстати такая же работа должна быть и у реального пользователя. Поэтому убедила разработчиков учесть это, и думаю будем переделывать данное меню.

Вопрос закрыт.
  • 1