gpt4 book ai didi

javascript - Selenium Webdriver 执行由于 javascript 等待条件而卡住

转载 作者:行者123 更新时间:2023-12-03 11:53:11 27 4
gpt4 key购买 nike

我一直在使用java脚本等待条件来等待页面加载,我的代码如下:

public void untilPageIsLoaded() {
ExpectedCondition<Boolean> condition = new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver driver) {
return ((JavascriptExecutor) driver).executeScript("return document.readyState").equals("complete");
}
};
WebDriverWait wait = new WebDriverWait(driver, timeout);
wait.until(condition);
}

最初这段代码运行得很好,但几天后我的测试开始陷入随机点。所以我调查了这个问题,发现罪魁祸首是 java 脚本等待条件之上的停止执行。

即使我没有遇到任何异常,也不会超时。我知道这很奇怪,但这不仅仅是我的问题,看看这里;

https://code.google.com/p/selenium/issues/detail?id=6955

我尝试使用升级/降级版本的selenium和浏览器,更改了系统配置,但没有一个起作用。

现在我想用其他代码替换上面的java脚本等待条件。我不想使用thread.sleep();

请给我推荐一些好东西。

最佳答案

无论如何,在文档准备好之前,这段代码永远不会执行。

所以不需要从 selenium 执行这个 JS - 因为它只能返回一个结果 - “完整”。

这是因为在进入页面之前你无法从 SE 执行 JS。进入页面的唯一方法是调用 Selenium 的 .get(),它会阻止任何后续执行,直到 DOM 完全加载。因此 .get() 已经执行了 .untilPageIsLoaded() 原本会执行的操作。

关于javascript - Selenium Webdriver 执行由于 javascript 等待条件而卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25718133/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com