自动化测试的三种等待方式
隐式等待
- 关键方法
- 通过driver对象调用implicitly_wait()方法
- 设置超时时间
- 作用
- 在设置了超时时间里,后续的所有元素定位方法都会在这个时间内等待元素的出现。
- 他会等待页面全部加载完进行定位我们需要的元素,会浪费不必要的时间
- 如果元素出现了,直接进行下一步操作
- 如果没有出现,报错 NoSuchElementException
显式等等
- 关键方法
- 关键字:WebDriverWait
- 方法:WebDriverWait对象的until方法
- 作用
- 在设置了显式等待之后,可以等待一个超时时间,在这个超时时间之内进行查找,默认0.5s找一次(频率可以设置)
-无须等待页面全部加载完毕,只要 找到这个元素,就会直接进行后续操作 - 没有找到,报错 TimeOutException
强制等待
- sleep
- 能做元素的等待,可以调试的时候看结果,真正用的时候不推荐,会造成时间上的浪费
怎么选择隐式和显式等待呢
- 现在代码底层都会封装,所以不存在哪种写起来方便的问题,一次封装,就解决了这个问题
- 显式等待,可以针对每一个元素进行单独的设置
- 隐式等待,针对全局的元素定位
def web_el_wait(self, locate_type, value):
return WebDriverWait(self.driver, 10, 0.5).until(
lambda el:self.locate(locate_type, value), message='元素查找失败'
)