等待网络通过Selenium WebDriver闲置吗?

时间:2019-02-13 23:41:04

标签: javascript python selenium

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

等待jQuery.active /页面就绪状态等是一种常见的做法,但是可以做到这一点,我们可以查询待处理的请求并等待直到网络完全空闲?

1 个答案:

答案 0 :(得分:1)

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

  1. Selenium是否可以监视所有基于Web的API调用?直到3.x.x
  2. ,我都没有在任何Selenium实现中看到它
  3. 我们可以实现这种方法吗-是的。我们可以为每个触发的请求增加一个计数器,为每个满足的请求减少一个计数器,只有当计数器为零时才使用测试脚本前进。我可以设想通过Chrome Dev协议(Selenium 4+)或Web代理(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");

}