一、背景
在打开应用程序的页面时,总会有加载的时间,有时候在获取页面元素时,页面还没有加载完毕,导致无法定位某些想要获取的元素,此时就需要利用等待方法。
二、隐式等待
-
方法:driver.implicitly_wait(时间)
driver.implicitly_wait(5)
-
作用:设置隐式等待后,后续所有的定位元素的方法,都会在这个时间内等待元素的出现,如果出现进行下一步操作,若没有出现则报错。
三、显示等待
-
方法:WebDriverWait(driver,时间,频率).until(方法)
from selenium.webdriver.support.wait import WebDriverWait WebDriverWait(driver,5).until(XXX)
-
作用:设置显示等待后,会在设定的时间范围内按照一定的频率查找该元素是否出现(默认查找频率时0.5s,可以在方法中进行修改),若元素出现,则进行下一步操作,若没有出现,则报NoSuchElementException错误。
四、使用场景
- 作用域:显示等待对单个元素有效,方法灵活,扩展性强,但是代码量复杂,后续可以通过封装减少使用的复杂度;隐式等待对全局有效,方法不灵活,代码效率不高,但是使用简单。
- 方法:显示等待 WebDriverWait 对象的 until 方法,隐式等待 driver 的 implicitly_wait 方法。
网友评论