Как читать текст строки состояния браузера в Selenium WebDriver

Кто-нибудь знает, как читать текст строки состояния браузера FireFox с помощью Selenium WebDriver? Я хочу это, потому что я хочу знать, загружена ли вся моя веб-страница полностью или нет.

Пожалуйста, предложите мне, если есть другой способ сделать. Вызов любого JavaScript (который будет возвращать мне текст строки состояния Firefox из моей программы Java)?

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

Спасибо!


person OverrockSTAR    schedule 21.03.2011    source источник


Ответы (1)


Я не думаю, что есть способ прочитать строку состояния FireFox с помощью WebDriver.

Когда вы делаете webdriver.get(), он будет ждать, пока не сработает событие «onload», прежде чем вернуть управление вашему тесту или скрипту. Однако этого может быть недостаточно, если ваша страница использует много AJAX для загрузки контента на вашу страницу, а событие «onload» срабатывает, пока материал все еще отображается в браузере.

Если вам нужно убедиться, что такие страницы полностью загружены, решение состоит в том, чтобы использовать «ожидание».

Вы можете дождаться определенного элемента:

Wait<WebDriver> wait = new WebDriverWait(driver, 10);
wait.until(visibilityOfElementLocated(By.id("target"))); 

см.: http://seleniumexamples.com/blog/examples/selenium-2-examples/

Или попробуйте дождаться, пока Ajax выполнит любые ожидающие запросы:

см.: http://blog.activelylazy.co.uk/2010/05/05/testing-asynchronous-applications-with-webdriver/

person Sam Backus    schedule 21.03.2011
comment
Selenium 2 имеет неявные ожидания, а это означает, что простое использование findElement будет ждать, пока целевой элемент не появится и не станет видимым. - person Dave Hunt; 22.03.2011
comment
@ Дэйв, что, если этот элемент не отображается? выдаст ли он какое-то исключение, если не найдет этот элемент? - person OverrockSTAR; 22.03.2011
comment
Ты прав. Я столкнулся с проблемой, когда собираю результаты поиска из Google. Теперь я думаю, что он использует Ajex, и из-за этого мой скрипт не работает. Пока я временно использую простые while loop - while(driver.findElements(By.linkText("Google Home")) == null && driver.findElements(By.linkText("About Google")) == null && driver.findElements(By.linkText("Advertising Programs")) == null) { driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS); } - person OverrockSTAR; 22.03.2011