Selenium 等待文档准备好

标签 selenium load document wait

谁能告诉我如何让selenium等到页面完全加载?我想要一些通用的东西,我知道我可以配置 WebDriverWait 并调用“find”之类的东西来让它等待,但我不会走那么远。我只需要测试页面加载是否成功,然后转到下一页进行测试。

我在.net中找到了一些东西,但无法使其在java中工作......

IWait<IWebDriver> wait = new OpenQA.Selenium.Support.UI.WebDriverWait(driver, TimeSpan.FromSeconds(30.00));
wait.Until(driver1 => ((IJavaScriptExecutor)driver).ExecuteScript("return document.readyState").Equals("complete"));

大家有什么想法吗?

最佳答案

您建议的解决方案仅等待 DOM readyState表示完成。但默认情况下,Selenium 会尝试通过 driver.get() 等待页面加载(以及更多一点)。和 element.click()方法。它们已经处于阻塞状态,等待页面完全加载,并且应该可以正常工作。

问题显然是通过 AJAX 请求和运行脚本进行重定向 - 这些无法被 Selenium 捕获,它不会等待它们完成。此外,您无法通过 readyState 可靠地捕获它们 - 它会等待一段时间,这可能很有用,但在下载所有 AJAX 内容之前,它会发出 complete 信号.

没有一个通用的解决方案可以在任何地方、对每个人都适用,这就是为什么它很困难,而且每个人使用的东西都有点不同。

一般规则是依靠 WebDriver 完成他的部分,然后使用隐式等待,然后对要在页面上断言的元素使用显式等待,但是还有更多技术可以完成。您应该在测试的页面上选择最适合您的情况的一个(或几个的组合)。

有关详细信息,请参阅我的两个答案:

关于Selenium 等待文档准备好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15122864/

相关文章:

java - Selenium: JUnit4: WebDriver: IE: 使用 IE 时出现 NoSuchElementException

python - 无法切换到框架

javascript - Robot Framework - 通过执行 Javascript 运行关键字 If

javascript - mxgraph 是否有任何编写良好的文档?

javascript - 使用 JS 更改页面背景颜色的最快方法?

java - 使用 selenium webdriver 打开本地 HTML 文件

Java 类路径,Unix 上的 Weblogic 中不带 .jar 扩展名的 jar 文件

Javascript - 将页面保存到本地存储

jquery - 将加载和错误事件附加到动态图像

sorting - CouchDB - 按位置对文档进行排序