【问题标题】:Wait for network to be idle with selenium webdriver?使用 selenium webdriver 等待网络空闲?
【发布时间】:2019-07-07 22:23:27
【问题描述】:

Puppeteer 具有等待网络完全空闲的功能,是否可以使用 python selenium Web 驱动程序实现相同的显式等待,或者通过从驱动程序上下文执行一些 javascript 直接使用一些 javascript 解决方法?

等待jQuery.active/页面就绪状态等是常见的做法,但是是否可以我们可以查询挂起的请求并等待网络完全空闲?

【问题讨论】:

    标签: javascript python selenium


    【解决方案1】:

    所以我在这个问题中看到了 2 个问题:

    1. Selenium 是否可以监控所有基于 Web 的 API 调用?在 3.x.x 之前,我还没有在任何 Selenium 实现中看到这一点
    2. 我们可以实现这样的方法吗 - 可以。我们可以为每个触发的请求增加一个计数器,并为每个满足的请求减少它,只有在计数器为零时才继续使用测试脚本。我可以设想这是通过 Chrome 开发协议 (Selenium 4+) 或网络代理 (browsermob) 实现的。

    注 1:Selenium 官方建议对此类问题使用流利等待或显式等待。

    注 2:我已经看到了一些等待文档就绪状态的粗略和抽象实现:

    public void waitForPagetoLoad() throws InterruptedException {
        long millis = 1000;
        Thread.sleep(millis);
        do {
            Thread.sleep(millis);
            millis = millis + 2000;
        } while (!(((JavascriptExecutor) driver).executeScript("return document.readyState").toString()
                .equals("complete")) || millis <= 10000);
        Reporter.log("Web page loading is complete in " + (millis / 1000) + "  Seconds");
    
    }
    

    【讨论】:

      猜你喜欢
      • 2023-02-03
      • 1970-01-01
      • 2011-05-05
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      • 1970-01-01
      相关资源
      最近更新 更多