我正在编写一些 Java Webdriver 代码来自动化我的应用程序。如何正确判断页面是否已加载?该应用程序也有一些 Ajax 调用。
我已经声明了对 WebDriver 的隐式等待。
最佳答案
Selenium 会为你做到这一点。或者至少它尽力了。有时它会达不到要求,你必须帮它一点忙。通常的解决方案是 Implicit Wait
这解决了大部分问题。
如果您确实知道自己在做什么以及为什么这样做,您可以尝试编写一个通用方法来检查页面是否完全加载。然而,这并不能适用于所有网络和所有情况。
<小时/>相关问题:Selenium WebDriver : Wait for complex page with JavaScript(JS) to load ,请参阅我的回答。
简短版本:你永远无法确定。
“正常”负载很容易 - document.readyState
。当然,这个是由 Selenium 实现的。有问题的事情是异步请求,AJAX,因为你永远无法判断它是否是永久完成的。当今大多数网页都具有永久运行并始终轮询服务器的脚本。
您可以执行的各种操作位于上面的链接下。或者,像 95% 的其他人一样,使用 Implicit Wait
隐含性和Explicit Wait
+ ExpectedConditions
在需要的地方。
例如单击后,页面上的某些元素应该变得可见,您需要等待它:
WebDriverWait wait = new WebDriverWait(driver, 10); // you can reuse this one
WebElement elem = driver.findElement(By.id("myInvisibleElement"));
elem.click();
wait.until(ExpectedConditions.visibilityOf(elem));
关于jquery - 如何在网络驱动程序中检查页面是否已完全加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11001030/