Селен: Как я могу заставить WebDriver игнорировать ошибку «Элемент не виден»? - PullRequest
7 голосов
/ 08 сентября 2011

Я использую Selenium WebDriver (v2.5.0). Я получаю эту ошибку, когда использую команду driver.click(...) "

Element is not currently visible and so may not be interacted with Build info: version: '2.5.0', revision: '13516', time: '2011-08-23 18:30:44' System info: os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.38-10-generic', java.version: '1.6.0_26' Driver info: driver.version: RemoteWebDriver

В браузере, когда я наводю указатель мыши на элемент, щелкающий элемент становится видимым. Есть ли способ проверить, что-то видно или нет?

Ответы [ 2 ]

13 голосов
/ 08 сентября 2011

Вы можете сделать это с помощью действий.Чтобы добиться того, что вы хотите, используйте клиент Python Webdriver, но принцип тот же.

ActionChains(driver).move_to_element(driver.find_element(By.ID, 'Foo'))\
  .click(driver.find_element(By.Name, "Bar"))\
  .perform()
4 голосов
/ 22 марта 2013

Лучшее решение - не использовать метод click (), а реализовывать действия, а селен (с помощью веб-драйвера) имитировать перемещение мыши над элементом, чтобы активировать события, которые затем делают элемент кликабельным / включенным. как только вы активировали элемент, затем выполните метод click () по мере необходимости. Я предполагаю, что элемент отключен, что делает его не кликабельным в первую очередь.

Установив свой элемент, вы также можете использовать RenderedWebElement, который имеет метод hover (), тогда вам не нужно будет создавать следующий объект Actions, однако он может не работать в зависимости от того, как приложение разработано с собственными событиями. Попробуйте оба, посмотрите, что работает лучше всего и наиболее элегантно.

WebElement element = driver.findElement(By.id("element_id"));

Создание нового действий объекта, поддерживаемого веб-драйвером

Actions actions = new Actions(driver);

Переместите курсор на элемент - это «активирует» ваш элемент, чтобы на него можно было кликать

actions.moveToElement(element).perform();

Убедитесь, что элемент теперь активен или активирован

assertThat(element.isEnabled());

Теперь выполните действие щелчка

element.click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...