gpt4 book ai didi

java - 等待使用 HtmlUnitDriver 加载页面

转载 作者:行者123 更新时间:2023-12-02 11:16:48 28 4
gpt4 key购买 nike

我有几个使用 Selenium 和 HtmlUnitDriver 运行的测试。有时,当我运行它们并想要单击某个元素或阅读文本时,无法找到该元素。每次抛出异常时,我都会保存页面的代码以用于调试目的。但是当我检查代码时,该元素就在那里,当我重新运行测试时,一切正常。我的猜测是,当我尝试访问该元素时,页面尚未完全加载。所以我想等到 Selenium 完成加载页面后再尝试访问元素。

我喜欢两种方法来实现它:

  1. 执行Javascript(例如window.initComplete)并等待结果为真。问题:在 Selenium 中,我必须有一个 JavascriptExecuter 实例,但 HtmlUnitDriver 不是从该类派生的,而且我无法切换到 FirefoxDriver(它实现了 JavascriptExecuter 接口(interface)),因为我们正在 headless 运行测试。

  2. 等待页面上的最后一个元素加载这种方法的问题在于,页面是基于我们的框架的,如果框架发生变化,并且页面底部突然出现不同的元素,我必须调整每个测试。

关于如何解决这个问题有什么建议吗?

最佳答案

您可以创建自定义 ExpectedCondition:

public static ExpectedCondition<Boolean> waitForLoad() {
return new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
return ((JavascriptExecutor) driver).executeScript("return document.readyState").equals("complete");
}
};
}

关于java - 等待使用 HtmlUnitDriver 加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50210303/

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