jquery - 如何在网络驱动程序中检查页面是否已完全加载?

标签 jquery selenium webdriver wait

我正在编写一些 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/

相关文章:

javascript - 表单提交事件中 this.submit() 的行为

javascript - Chrome 浏览器无法启动错误 : connect ECONNREFUSED 127. 0.0.1:4444

Ruby - 需要 'watir-webdriver' - 生成一个没有这样的文件的 LoadError ... 为什么?

javascript - 从另一个获取 css 高度值

jquery - 使多个 div 相互 float

javascript - 在 chrome 上运行 nightwatch.js/selenium 框架时启​​用 WebGL

ruby - Watir 的 Firefox 浏览器可以安装扩展吗?

java - 无法使用 Java/webDriver 中的选择类更改选择框值

带有咕噜声的 WebDriver + Protractor

javascript - 如何确保在 DOM 中准备好随附的 HTML(也通过 AJAX 接收)后执行通过 AJAX 插入的 JavaScript?