суббота, 16 ноября 2013 г.

Дожидаемся полной загрузки страницы в Selenium WebDriver

Дожидаемся полной загрузки страницы в Selenium WebDriver

Собственно говоря, иногда нужно дождаться полной загрузки страницы прежде чем выполнять какие либо действия.
Или когда не подгружается какой либо ресурс ваши тесты могут висеть бесконечно(что гораздо хуже)
Вообще в интернете советуют использовать либо implicit wait WD,либо завязывать на какой либо элемент с которым мы хотим работать после загрузки.
Можно делать так как советуют,но иногда этого не достаточно.Как в примере с недоступным ресурсом который можно очень долго ждать.
Я предпочитаю примерно такую реализацию:

 
  public void waitForPageLoaded() {
        ExpectedCondition expectation = new
                ExpectedCondition() {
                    public Boolean apply(WebDriver driver) {
                        return WebDriverController.executeScript("return document.readyState").toString().equals("complete");
                    }
                };

        try {
            getInstanceWaitDriver().until(expectation);
        } catch(Throwable error) {
            Assert.fail("Timeout waiting for Page Load Request to complete.");
        }
    }
Можно назвать это хаком,т.к я использую JavaScript, но я так не считаю)
Всем спасибо.