首页 > 解决方案 > 如何让 selenium(Chrome) webdriver 等到网络中没有待处理的请求?(使用 JAVA)

问题描述

我试图在性能日志中进行迭代,直到有包含“WillBeSent”(待处理)状态的响应方法......但是性能日志正在被自动清除,并且无法检索具有待处理状态的请求。

这是我尝试过的代码:

              do{
                    allmethod="";
                    sleep(1000);
                    logs = driver.manage().logs().get("performance");
                    for (Iterator<LogEntry> it = logs.iterator(); it.hasNext();) {
                        LogEntry entry = it.next();
                        JSONObject json = new JSONObject(entry.getMessage());
                        JSONObject message = json.getJSONObject("message");
                        String method = message.getString("method");
                        allmethod = allmethod + " " + method;
                        System.out.println(allmethod);
                    }
                }while(allmethod.contains("WillBeSent")==Boolean.TRUE);

有没有其他方法可以使用 selenium 在 Chrome 的“网络”选项卡中捕获任何待处理的请求?

标签: javaseleniumselenium-chromedriver

解决方案


希望这段代码能解决您的问题,此方法将检查所有 DOM 元素是否处于就绪状态。

私人无效waitUntilJSReady(){

try {
    ExpectedCondition<Boolean> jsLoad = driver -> ((JavascriptExecutor) this.driver)
        .executeScript("return document.readyState").toString().equals("complete");

    boolean jsReady = jsExec.executeScript("return document.readyState").toString().equals("complete");

    if (!jsReady) {
        jsWait.until(jsLoad);
    }
} catch (WebDriverException ignored) {
}

}


推荐阅读