等待停止测试,直到网页上不再发生任何事情

时间:2016-12-21 19:30:04

标签: selenium selenium-webdriver selenium-chromedriver

我正在使用 Java Selenium 来编写测试。在我的测试中,我不得不等到页面或其中的某些部分加载了一些内容。我想等到负载完成。我找到了这两个:

1) pageLoadTimeout
2) setScriptTimeout

但我不知道它们之间的确切区别,即使它们是我需要的。 该文件说:

setScriptTimeout: Sets the amount of time to wait for an asynchronous script to finish execution before throwing an error. If the timeout is negative, then the script will be allowed to run indefinitely.

pageLoadTimeout: Sets the amount of time to wait for a page load to complete before throwing an error. If the timeout is negative, page loads can be indefinite.

但我真的没有。

我需要的是一个停止测试的等待,直到网页上不再发生任何事情。

1 个答案:

答案 0 :(得分:3)

定义“网页中没有发生任何事情。”现在以这样的方式定义它,以满足创建的每个网页或将要创建的每个网页。您的定义是否包含网络流量不再通过网络?您的定义是否包含onload事件已被解雇?如果document.readyState返回一个意思是“完成”的值怎么样?您是否考虑过JavaScript执行?如何使用window.setTimeout()安排JavaScript? WebSockets的?服务人员?那么<frame><iframe>元素呢?

现在您知道为什么WebDriver没有“等待页面完成”类型的等待。上面提到的项目甚至没有开始划分用户可以合法使用的事物列表的表面,在“页面上不再发生任何事情”的定义中。正确的方法是在DOM中等待下一页上要与之交互的元素。 WebDriverWait类非常适合这种情况。