当前位置: 首页 > 知识库问答 >
问题:

如何等待直到使用Selenium Webdriver加载favicon

方野
2023-03-14

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

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

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

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

共有1个答案

诸葛嘉熙
2023-03-14

我不确定等待法维康是否是个好主意。不同的应用程序使用不同的技术,在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);

 }
 类似资料:
  • 如何使SeleniumWebDriver在只有src属性的情况下等待iframe完全加载。我试图创建一个测试用例,其中包含表单元素的iframe从不同的源加载,而切换到此iframe时,此iframe的内容不可用,因此测试失败。因此,我如何使Webdriver等待iframe完全加载。

  • 我使用等待块使代理等待,直到条件为真(资源空闲)。我尝试在等待块“输入”字段中写入以下内容: 问题是,如果资源变得繁忙,代理将被困在等待块中,不会被释放,即使条件再次变为真。然后,当下一个代理进入等待块时(条件再次变为真),它将传递原本在它前面的代理,但现在被卡住了。有办法解决这个问题吗?

  • 我实际上有三个问题: Selenium WebDriver如何实现此 因为我们不能给无限睡眠的线程一个负值。 有没有更好的方法来实现无限等待? 我们在SeleniumWebDriver文档中看到了这一点

  • 问题内容: 我正在开发Chrome中的扩展程序,但我想知道:找出元素何时存在的最佳方法是什么?使用纯JavaScript,间隔检查直到元素存在,或者jQuery是否有一些简单的方法来执行此操作? 问题答案: 由于性能问题,不建议将其与其他DOM突变事件一起弃用- 推荐的方法是使用MutationObserver来监视DOM。不过,只有新的浏览器才支持此功能,因此您应该在不可用时退回。

  • 如何让代码等待页面在Nodejs中完全加载?我使用SeleniumWebDriver版本4.0。0

  • 我在eclipse中使用SeleniumWebDriver和TestNG。问题是页面在某些数据的中途重新登录,并且重新加载的时间是灵活的,这就是为什么我不能应用显式等待时间。我想让webdriver等待,直到重新加载完成。 我正在尝试通过此代码执行此操作……但它不起作用。