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

Фотография

Selenium не находит существующий элемент


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

#1 almagnit

almagnit

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

  • Members
  • Pip
  • 22 сообщений

Отправлено 14 августа 2011 - 19:04

Что можно предпринять в Selenium WebDriver, если нужный элемент находится за областью просмотра, есть ли какой нибудь скролл к этому элементу ?

И скажите правильно ли, оборачивать WebDriver в WebDriverBackedSelenium, если тесты пишутся с нуля ?

PS
Тест на Java под IE8
  • 0

#2 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 14 августа 2011 - 20:54

Что можно предпринять в Selenium WebDriver, если нужный элемент находится за областью просмотра, есть ли какой нибудь скролл к этому элементу ?

Ничего не надо предпринимать. Страница сама автоматически проскроллируется.

И скажите правильно ли, оборачивать WebDriver в WebDriverBackedSelenium, если тесты пишутся с нуля ?

Неправильно. WebDriverBackedSelenium -- это всего лишь эмулятор старого API на новом движке. Он нужен только для миграции старых тестов.
Рекомендую почитать вот эту пояснительную заметку.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#3 almagnit

almagnit

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

  • Members
  • Pip
  • 22 сообщений

Отправлено 14 августа 2011 - 21:41

/* Выполняем нажатие на пиктограмме "Добавить пользователей" */  
driver.findElement(By.name("edit_group_members_contents_Image_0")).click();
		
/* Переходим во фрейм справочника организационной структуры */
driver.switchTo().frame(0);

Если окно браузера развернуто на весь экран, то этот код выполняется, если окно не развернуто, то появляются исключения
(не знаю с чем связано, но сначала получал одно исключение, теперь другое)

На клик вываливалось: ElementNotVisibleException (иконка действительно не видна в не развернутом окне, я стал его разворачивать и отписал на форуме)

На фрейм: NoSuchFrameException (я так понял клик не прошел и фрейм не появился, это я после Вашего ответа решил перепроверить)

Если запускаю тест и разворачиваю окно, то все проходит нормально.

PS
Кстати да, я обратил внимание, действительно скролл есть, но почему-то не к этому img, будет время попробую другие локаторы на этот элемент и его родителей.
  • 0

#4 Alex

Alex

    Постоянный участник

  • Members
  • PipPipPip
  • 237 сообщений
  • ФИО:Алексей

Отправлено 15 августа 2011 - 07:43

/* Выполняем нажатие на пиктограмме "Добавить пользователей" */  
driver.findElement(By.name("edit_group_members_contents_Image_0")).click();
		
/* Переходим во фрейм справочника организационной структуры */
driver.switchTo().frame(0);

Если окно браузера развернуто на весь экран, то этот код выполняется, если окно не развернуто, то появляются исключения
(не знаю с чем связано, но сначала получал одно исключение, теперь другое)

На клик вываливалось: ElementNotVisibleException (иконка действительно не видна в не развернутом окне, я стал его разворачивать и отписал на форуме)

На фрейм: NoSuchFrameException (я так понял клик не прошел и фрейм не появился, это я после Вашего ответа решил перепроверить)

Если запускаю тест и разворачиваю окно, то все проходит нормально.

PS
Кстати да, я обратил внимание, действительно скролл есть, но почему-то не к этому img, будет время попробую другие локаторы на этот элемент и его родителей.


В своем проекте перед каждым кликом выполняем скрол элемента через JavaScript:

((RemoteWebDriver) webDriver).executeScript("arguments[0].scrollIntoView()", elementToBeClicked);

  • 0

#5 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 15 августа 2011 - 08:05

Если само не скроллируется -- можно это делать явно. Но вообще-то если автоматического скроллирования не происходит -- это баг в Selenium, в этом случае рекомендую создать по этому поводу баг-репорт.

Но я бы предположил, что эта картинка на самом деле не видна. Может быть она становится видимой, например, только при наведении мыши (а до этого на её месте видна другая картинка).
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium


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

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