无论是APP自动化还是web自动化,写自动化用例必不可少的就是等待
一、设置等待的原因
运行自动化用例时,可能会因为当前页面没有加载完成,导致元素定位不到,从而引发用例执行失败的情况。
常见因素有以下几种:
1、网络原因,弱网导致页面元素加载过慢
2、服务器处理请求原因
3、电脑配置原因
等待方式:
1、强制等待_sleep()
2、隐式等待_implicitly_wait()
3、显示等待_WebDriverWait()
二、强制等待(固定时间等待)
1、导入time包;import time
2、time.sleep(10)
全局等待10秒,这个方法非常不灵活,如果时间不够,用例继续报错,如果时间过多,影响执行效率。
三、隐式等待
driver.implicitly_wait(20)
webdriver提供的超时等待,如果webdriver没有在dem中找到元素,将进行等待,如果超出预设时间还没有找到,则抛出异常。对全局影响。
和sleep相比,他更加智能。
四、显示等待
WebDriverWait
等待页面加载完成,等到了某个元素,再继续执行后续代码,如果超过设置时间检测不到则抛出异常
WebDriverWait(driver, timeout, poll_frequency=0.9, ignored_exceptions=None)
参数详解:
driver:WebDriver 的驱动程序(Ie, Firefox, Chrome 或远程)
timeout:最长超时时间,默认以秒为单位
poll_frequency:休眠时间的间隔(步长)时间,默认为 0.9 秒
ignored_exceptions:超时后的异常信息,默认情况下抛 NoSuchElementException 异常
WebDriverWai()一般由 unit()或 until_not()方法配合使用:
until(method, message=’’) 调用该方法提供的驱动程序作为一个参数,直到返回值不为 False。
until_not(method, message=’’) 调用该方法提供的驱动程序作为一个参数,直到返回值为 False。
等待方式对于自动化还是很重要的,与代码的通过率与执行速率息息相关,期待下一次更深入的学习。