我正在寻找Java+ selenium中的函数,我可以在其中检查或验证页面是否已完全加载。我看到了JS的onLoad()
,但在java上什么都没有,JAVA有什么东西吗?
我也看到了这些:
WebDriver driver = new AnyDriverYouWant();
if (driver instanceof JavascriptExecutor) {
((JavascriptExecutor)driver).executeScript("yourScript();");
} else {
throw new IllegalStateException("This driver does not support JavaScript!");
}
但同样是JS,需要用JS编写脚本 如何将JavaScript与Selenium WebDriver Java一起使用
更新- 也可以尝试这些解决方案:void waitForLoad(WebDriver driver) {
new WebDriverWait(driver, 30).until((ExpectedCondition<Boolean>) wd -> ((JavascriptExecutor) wd).executeScript("return document.readyState").equals("complete")); }
从这里 https://stackoverflow.com/a/15124562/12115696
为了确定页面是否已完全加载,您需要确定页面上的哪些 WebElements 指示加载状态。例如,如果存在某种类型的加载掩码,则需要等到隐藏加载掩码以验证页面是否已完全加载。
下面是一个简单的"等待加载"函数,它利用了ExpectedConditions
类:
给定以下加载掩码的 HTML:
<div id='load-mask' style='display: block'/>
您可以使用以下代码等待加载掩码被隐藏:
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(seconds));
wait.Until(ExpectedConditions.InvisibilityOfElementLocated(By.Id("load-mask")));
编辑 -- 根据提问者的要求,添加了一个仅限 JavaScript 的等待函数:
wait.until(driver=> ((JavascriptExecutor)driver).executeScript("return document.readyState").equals("complete"));
这将检查 JavaScript 中的document.readyState
属性,并在readyState
设置为complete
后完成等待。