自动化测试中经常使用的三种等待时间分别是:
强制等待、隐式等待、显式等待
1、强制等待
time.sleep(2)
最简单的等待,代码执行到此处,不管什么情况,都会等待,等待的时长根据传入的参数,以秒为单位;
缺点就是无法自动判断元素是否出现,如果设置的时间比较长,就会浪费时间。
2、隐式等待
self.driver.implicitly_wait(10)
全局设置一次即可,设置了隐式等待,需要在规定的时间内页面的所有元素都加载完了才会执行下一步;
缺点就是页面如果有js加载时间过长,就会使得等待时间变得很长甚至超时。
3、显式等待
WebDriverWait(self.driver, 20, 0.5).until(EC.visibility_of_element_located(loc))
WebDriverWait(self.driver,20,0.5).until(lambda diver:driver.find_element_by_id('kw'))
对某个元素进行等待,等待时间20秒,每隔0.5秒检查一次元素是否出现。
- 当打开一个新页面,执行第一个元素操作的时候
- 当某一步操作会引发页面的加载,并且加载的内容包含了下一步需要操作的元素。一句话,就是当某个元素有加载过程的时候,就需要加上显示等待。