UI自动化(六)三种等待方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UI自动化(六)三种等待方式相关的知识,希望对你有一定的参考价值。
参考技术A 因为调用的time类的sleep方法,所以等待的方式与页面元素无关,执行到此就必然给出规定时间的等待。在规定时间内等待页面元素全部加载完毕。若在规定时间提前加载完成则会立即往下执行,若在规定时间延迟加载完成,则到达时间也会立刻执行。
借用网友的一个非常形象的比喻来进行说明:闪电侠(driver)和凹凸曼(页面元素)约定好,不论闪电侠去哪儿,都要等凹凸曼XX秒,如果凹凸曼在这段时间内来了,则俩人立即出发去打怪兽,如果凹凸曼在规定时间内没到,则闪电侠自己去,那自然就等着凹凸曼给你抛异常吧。
注意:driver.implicitly_wait(XX)方法在全局仅需设置一次即可,之后只要driver打开的页面,均会生效。
讲解:WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)
需要通过from selenium.webdriver.support.wait import WebDriverWait导入模块
- driver:浏览器驱动
- timeout:最长超时时间,默认以秒为单位
- poll_frequency:检测的间隔步长,默认为0.5s
- ignored_exceptions:超时后的抛出的异常信息,默认抛出NoSuchElementExeception异常。
※ 一般与until()或者until_not()方法结合使用。
WebDriverWait(driver,10).until(method,message="") 调用该方法提供的驱动程序作为参数,直到返回值为True
WebDriverWait(driver,10).until_not(method,message="") 调用该方法提供的驱动程序作为参数,直到返回值为False
WebDriverWait(driver,10,0.5).until(EC.presence_of_element_located((By.ID,"kw")),message="") 如果省略message=“”,则By.ID外面是三层(),参数是元组 (By.ID,"kw")
expected_conditions类提供的预期条件判断的方法
presence_of_element_located 判断某个元素是否被加到了 dom 树里,并不代表该元素一定可见
visibility_of_element_located 判断元素是否可见(可见代表元素非隐藏,并且元素宽和高都不等于 0)
presence_of_all_elements_located 判断是否至少有 1 个元素存在于 dom 树中。举例:如果页面上有 n 个元素的 class 都是’wp’,那么只要有 1 个元素存在,这个方法就返回 True
text_to_be_present_in_element 判断某个元素中的 text 是否 包含 了预期的字符串
text_to_be_present_in_element_value 判断某个元素中的 value 属性是否包含 了预期的字符串
element_to_be_clickable 判断某个元素中是否可见并且可点击
element_to_be_selected 判断某个元素是否被选中了,一般用在下拉列表
以上是关于UI自动化(六)三种等待方式的主要内容,如果未能解决你的问题,请参考以下文章