python等待机制
页面等级等待机制
页面级等待机制用于定义Selenium等待页面加载完毕的超时时间。默认设置为0(表示等待时间不限)。可以通过以下函数设置等待的超时时间。
driver.set_page_load_timeout(最长等待秒数)
该等待机制是全局等待机制,一般用于验证网页加载时间是否在规定范围内。对页面响应速度进行验证的时候可以使用
强制等待
不论在什么情况,只要遇到强制等待的函数,都要进行等待
强制等待的参数为:time.sleep(3) 其中参数单位为s
隐式等待
隐式等待就是webdriver会在约定好的时间范围内,持续不断的检测元素是否找到,一旦找到元素则执行后续的操作,超过时间没有找到元素则报错
隐式等待是在整个实例化的webdriver的整个生命周期,通俗讲就是作用与全局
隐式等待参数:driver.implicitly_wait(3) 其中参数单位为s
显示等待
显示等待是比隐式等待更加灵活的一种等待方式,他一般作用于局部,也就是说它可以针对单个元素做判断,如果在时间范围内找到这个元素那么进行后续操作。如果没有找到则报错
WebDriverWait(WebDriver实例, 超时秒数, 检测时间间隔[可选], 可忽略异常集合[可选] )
前两个参数都是必选参数,在实例化WebDriverWait对象时必须传入,后两个参数是可选参数,可以不传
检测时间间隔:调用until或until_not传入的条件判断函数的间隔时间,默认为0.5s。
可忽略异常集合:在调用until或until_not中传入的条件判断函数时,如果抛出的是这个集合中定义的异常,代码就不会执行失败,会继续正常执行。默认在集合中只有NoSuchElementException异常。
实例化WebDriverWait对象后,可以调用WebDriverWait对象的以下两个函数来执行等待。
WebDriverWait.until(条件判断函数, "超时后的自定义异常消息"[可选]):等待直到条件判断函数的返回值不为False(且没有抛出可忽略的异常)。
WebDriverWait.until_not(条件判断函数, "超时后的自定义异常消息"[可选]):等待直到条件判断函数的返回值为False(如果抛出可忽略的异常,也会当作False处理),和until恰好相反。其中,条件判断函数需要设置传入参数,传入参数的类型为WebDriver,返回值类型不限,但建议设定为布尔类型。
webdriver提供了WebDriverWait类和expected_conditions类来实现显示等待
WebDriverWait类用于定义超时时间和轮询频率等
expected_conditoons类用于提供一些预置条件,作为测试脚本进行后续操作的判断依据
WebDriverWait类的参数

自定义等待条件函数,原理就是使用判断元素是否显示来进行判断元素是否存在
WebDriverWait(driver,timeout),unitl(lambda p:p.find_element(By.XPATH,"路径").is_displayed())
WebDriverWait类提供的方法
until方法:在WebDriverWait类规定时间(第二个参数)内,每隔一定时间(第三个参数)调用一下method方法,直到返回的值不为false,如果超时就抛出异常
until_not方法:在WebDriverWait类规定时间(第二个参数)内,每隔一定时间(第三个参数)调用一下method方法,直到返回的值为false,如果超时就抛出异常
WebDriverWait的语法:
WebDriverWait(driver,超时时长,调用频率,忽略异常).until(可执行方法,超时后返回的信息)
显示等待常用的method方法


浙公网安备 33010602011771号