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

Программирование на C# для тестировщиков
онлайн, начало 14 мая
Первый Онлайн ИНститут Тестировщиков
онлайн, начало 18 мая
SQL для тестировщиков
онлайн, начало 17 мая
Английский для тестировщиков
онлайн, начало 17 мая
Фотография

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


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 ninfe@

ninfe@

    Новый участник

  • Members
  • Pip
  • 51 сообщений
  • Город:Калуга


Отправлено 08 апреля 2013 - 07:01

Всем привет! Помогите пожалуйста!
К сожалению доступа к приложению нет, попробую объяснить на скриншотах.
1. Кнопка меню "Добавить" при подведение мышки открывается меню см. скриншот 1
2. Далее при подводе мышки по каждому пункту меню, открывается ещё подпункты см. скриншот 2

Работаю с этим меню так
		Actions builder = new Actions(getDriver());
		builder.moveToElement(findElement(firstLocator));
		builder.moveToElement(findElement(secondLocator));
		builder.click(findElement(secondLocator)).perform();


Такой вариант работает отлично при условии что при открытии подпункта меню будет один пункт
например скриншот 4 (Видеоклипы -> Видеоклип)
В ситуации когда подменю отрывает несколько пунктов скриншот 3
Художественные фильмы -> Короткометражный художественный фильмы

Селениум ведет себя следующим образом
выбирает пункт меню "Художественные фильмы" затем почему то перескакивает на пункт ниже "Документальные фильмы" и выбирает там второй пункт меню.

Я не понимаю что происходит. Может быть дело в траектории движения мыши?

Прикрепленные файлы

  • Прикрепленный файл  1.PNG   8,19К   29 Количество загрузок:
  • Прикрепленный файл  2.PNG   11,73К   32 Количество загрузок:
  • Прикрепленный файл  3.PNG   12,74К   37 Количество загрузок:
  • Прикрепленный файл  4.PNG   11,41К   26 Количество загрузок:

  • 0

#2 Boltick

Boltick

    Специалист

  • Members
  • PipPipPipPipPip
  • 596 сообщений
  • ФИО:Алексей
  • Город:планета Земля

Отправлено 08 апреля 2013 - 14:05

можно глянуть на локаторы и на html код?

без них сложновато предугадать все :)
  • 1
Алексей Булат
Про Тестинг

#3 owasp

owasp

    Активный участник

  • Members
  • PipPip
  • 87 сообщений

Отправлено 08 апреля 2013 - 20:26

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

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

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

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

#4 ninfe@

ninfe@

    Новый участник

  • Members
  • Pip
  • 51 сообщений
  • Город:Калуга


Отправлено 10 апреля 2013 - 07:46

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

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

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

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


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

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

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

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

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


Selenium 2.0: стартовый уровень
онлайн
Программирование на Java для тестировщиков
онлайн
Автоматизация функционального тестирования
онлайн
Selenium WebDriver: полное руководство
онлайн



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале