java - 如何让 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 的“网络”选项卡中捕获任何待处理的请求?
解决方案
希望这段代码能解决您的问题,此方法将检查所有 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) {
}
}
推荐阅读
- typescript - 打字稿,@types/gulp gulp 4,浏览器同步
- ios - 如何在 UIPageViewController 中的视图控制器之前、之后删除?
- c# - 使用 nunit 报告 Specflow 测试的名称、步骤和状态
- reactjs - 是否可以在 React 项目的 scss 文件中使用 svg 文件?
- javascript - 打字稿:在时间戳上增加一小时
- php - laravel php str_replace函数用2个不同的值替换2个不同的值
- node.js - Firebase fcm sendMulticast 错误:“恰好需要主题、令牌或条件之一”
- oracle - Oracle 和 Postgres 之间的数据复制
- yii2 - yii2中的用户注册?
- laravel - 如何在 laravel 中从数据库中获取条带密钥并发布密钥