如何使用Selenium Webdriver加载favicon

时间:2013-03-08 12:54:55

标签: selenium python-2.7 webdriver selenium-webdriver

我想等待页面完全加载。我知道我可以通过等待加载页面元素来做到这一点。

但是我想要更通用的东西,我假设Favicon可用于确定页面是否已完全加载。

如何使用Selenium Webdriver确定FavIcon是否已加载到页面中?

“我知道它只是HTML源代码中的另一个元素。但如果你在任何网页上查看页面加载,Favicon将是最后一个加载。如果有办法等到Favicon是加载到网页上,我们可以使用它作为waitforpagetoload来测试整个应用程序(Favicon在Web应用程序的所有网页上都是一样的。)

1 个答案:

答案 0 :(得分:1)

我不确定等待图标是否是一个好主意。不同的应用程序使用不同的技术, IMO可能没有适用于所有Web应用程序的通用等待。以下是我用于“我的”应用程序的内容。这给了你一个想法。您需要构建适合“您的”应用程序的内容。

public void my_generic_wait_for_page_load() {
 final WebDriverWait wait = new WebDriverWait(this.getDriver(), 300);
 final JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
 final ExpectedCondition<Boolean> jQueryActive_toBeZero = new ExpectedCondition<Boolean>() {
    @Override
    public Boolean apply(WebDriver driver) {
        try {
             return ((Long) jsExecutor
                            .executeScript("return jQuery.active") == 0) ? true
                            : false;
        } catch (final WebDriverException e) {
        log.warn("It looks like jQuery is not available on the page, skipping the jQuery wait, check stack trace for details",e);
            return true; //skip the wait
        }
    }
};
   final ExpectedCondition<Boolean> document_readyState_toBeComplete = new ExpectedCondition<Boolean>() {
            @Override
            public Boolean apply(WebDriver driver) {
                return jsExecutor.executeScript("return document.readyState")
                        .toString().equals("complete") ? true : false;
            }
        };
        wait.until(jQueryActive_toBeZero);
        wait.until(document_readyState_toBeComplete);

 }