Raj*_*jha 5 selenium webdriver selenium-webdriver
如何使WebDriver等到页面加载完全停止.
意味着,它等待并检查整个页面是否已加载,然后只进行下一行执行.
最大的问题是没有适用于大多数用户的通用,一刀切的解决方案."当我的页面完成加载时"的概念在当今动态的,AJAX密集的,依赖于JavaScript的Web中几乎毫无意义.可以等待浏览器确定网络流量已完成,但这不会将JavaScript执行考虑在内.可以将页面的onload事件定义为"完成" ,但这会忽略页面使用的可能性setTimeout().此外,这些定义都不考虑帧或iframe.
谈到Selenium,需要考虑几个因素.请记住,Selenium RC API已有10年历史.在设计和开发时,典型网页的架构提出了一种waitForPageToLoad实用的方法.另一方面,WebDriver API识别当前的现实.单个驱动程序实现通常会尝试在显式页面导航期间等待页面加载(例如driver.get()),但是这种等待将是"尽力而为",并且不是保证.请注意,由用户交互(例如element.click())引起的导航将不太可能完全等待,因为这种交互是异步的,因此固有地具有竞争条件.
WebDriver的正确方法是等待您要与之交互的元素出现在后续页面上.这最好用一个WebDriverWait或类似的结构来完成.您可能会在支持库中找到一些其他构造,主要是那些处理页面对象模式的构造.您也可以尝试在驱动程序实例中设置隐式等待超时,但我相信使用它会掩盖意图.
小智 1
这实际上是 Selenium 的默认行为 - 它会等到所有请求完成后再继续执行下一行代码。
| 归档时间: |
|
| 查看次数: |
3500 次 |
| 最近记录: |