随着对selenium不断的深入学习,在网上搜索的资料越多,才发现自己掌握的只是冰山一角。
1、强制等待
用法:time.sleep(time_to_wait)
time_to_wait:表示超时时间(秒)
它是全局等待,意思是在指定时间内页面全部加载完成,超过设定时间后就可以执行下一步;反之,在指定时间内没有加载全部元素,会抛出异常。
刚学自动化的时候,不知道有这么多等待方式,最喜欢的就是用它去调试脚本,碰上加载不出元素就慢慢的增加时间,到最后整个脚本执行完都花了不少时间。现在回想下,可能是强制等待最大的弊端吧,不太灵活!
2、隐式等待
用法:driver.implicity_wait(time_to_wait)
time_to_wait:表示超时时间(秒)
它和强制等待一样,也是全局等待的意思。在规定时间内找到加装出页面所有元素后执行下一步;反之,在超过时间还没加载完成,则抛出异常;它的优点是稍微比强制等待灵活一点,加载完元素后就可以执行,节约了部分时间。
3、显示等待
用法:WebDriverWait(self,driver,timeout,poll_frequency=POLL_FREQUENCY,ignored_exceptions=None).until(要执行的方法, 超时时返回的错误信息)
self, 函数本身,在实际使用的时候不需要输入
dirver:实例化的WebDriver驱动
timeout:超时时间(秒)
poll_frequency=POLL_FREQUENCY:检查某个元素的时间间隔
ignored_exceptions,超时后的异常信息,默认情况下抛 “NoSuchElementException",可忽略
它针对的是某个特定元素,而不是全局等待。在给定时间和条件下,判断在等待时间内条件是否满足,如果满足则返回,如果不满足会继续等待,超过时间就会抛出异常。
参考: