gpt4 book ai didi

javascript - 如何等待整个页面加载完毕?

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

页面上的等待元素出现问题。

页面包含 20 项的列表我可以设置 100 而不是 20 并使用 JS 重新加载页面(子框架正在重新加载)

但是后来我得到了一个错误:元素不再有效

moveTNVPage.switchToThisPage();
moveTNVPage.selectQuantity();
waitForPageLoad();
moveTNVPage.selectEnabledCheckBox(wait);

waitForPageLoad():

public void waitForPageLoad() {
Wait<WebDriver> wait = new WebDriverWait(driver, 30);
wait.until(new Function<WebDriver, Boolean>() {
public Boolean apply(WebDriver driver) {
System.out.println("Current Window State : " + String.valueOf(((JavascriptExecutor) driver).executeScript("return document.readyState")));
return String.valueOf(((JavascriptExecutor) driver).executeScript("return document.readyState")).equals("complete");
}
});
}

在@BeforeTest中我已经设置:

    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.manage().timeouts().setScriptTimeout(5, TimeUnit.SECONDS);
driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS);

只有长时间的 thread.sleep() 才能帮助解决这个问题但在不同的测试环境中我需要不同的thread.sleep!

我怎样才能避免thread.sleep???我尝试过使用

wait.until(ExpectedConditions ... ...)

这也没有帮助。

B.R.安东

最佳答案

这是我使用的:

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

从声明中可以清楚地看出,这是等待文档状态完成。目前超时设置为 60 秒,可以更改。

您只需在需要等待页面加载的任何地方使用 waitForLoad(driver); 调用它即可。

关于javascript - 如何等待整个页面加载完毕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37414697/

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