在Selenium中,"等到页面加载停止"的命令是什么

Raj*_*jha 5 selenium webdriver selenium-webdriver

如何使WebDriver等到页面加载完全停止.

意味着,它等待并检查整个页面是否已加载,然后只进行下一行执行.

Jim*_*ans 9

最大的问题是没有适用于大多数用户的通用,一刀切的解决方案."当我的页面完成加载时"的概念在当今动态的,AJAX密集的,依赖于JavaScript的Web中几乎毫无意义.可以等待浏览器确定网络流量已完成,但这不会将JavaScript执行考虑在内.可以将页面的onload事件定义为"完成" ,但这会忽略页面使用的可能性setTimeout().此外,这些定义都不考虑帧或iframe.

谈到Selenium,需要考虑几个因素.请记住,Selenium RC API已有10年历史.在设计和开发时,典型网页的架构提出了一种waitForPageToLoad实用的方法.另一方面,WebDriver API识别当前的现实.单个驱动程序实现通常会尝试在显式页面导航期间等待页面加载(例如driver.get()),但是这种等待将是"尽力而为",并且不是保证.请注意,由用户交互(例如element.click())引起的导航将不太可能完全等待,因为这种交互是异步的,因此固有地具有竞争条件.

WebDriver的正确方法是等待您要与之交互的元素出现在后续页面上.这最好用一个WebDriverWait或类似的结构来完成.您可能会在支持库中找到一些其他构造,主要是那些处理页面对象模式的构造.您也可以尝试在驱动程序实例中设置隐式等待超时,但我相信使用它会掩盖意图.


小智 1

这实际上是 Selenium 的默认行为 - 它会等到所有请求完成后再继续执行下一行代码。

  • 答案有点简单。虽然大部分是正确的,但它掩盖了所涉及的许多微妙之处。有更好的答案,如果看到这个答案成为得分最高的答案,我会非常失望。 (4认同)