自动化测试(5):设置等待时间

⾃动化测试(5):设置等待时间
⼀、time.sleep(seconds) 固定等待
import time
time.sleep(3) #等待3秒
time.sleep(seconds) seconds参数为整数,单位(秒)。
白铜锡
它是Python的time提供的休眠⽅法。
常⽤于短时间的等待,为了⾃动测试⽤例的执⾏效率固定等待的时间需要控制在3秒内。在⽤例中尽量少⽤固定等待。在爬⾍应⽤中,为模拟⽤户操作浏览器,防⽌过快操作,可使⽤固定等待。
⼆、智能隐性的等待implicitly_wait(回应超时等待)
driver.implicitly_wait(time_to_wait)
回应超时等待,隐性的,设置后对应的是全局,如查元素
driver.implicitly_wait(10)  # 设置全局隐性等待时间,单位秒
每次driver执⾏ 不到元素都会等待设置的时间,它的值设置的过长对⽤例执⾏效率有很⼤的影响,必须在执⾏完成之后还原回来。
driver.implicitly_wait() 要慎之⼜慎的使⽤。
driver对它的默认值为0,driver.implicitly_wait(0)能还原隐性等待的设置时间。
三、智能显性等待WebDriverWait
from selenium.webdriver.support.wait import WebDriverWait
WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
参数说明:
driver 为webdriver驱动
timeout 最长超时时间,单位(秒)
poll_frequency 循环查元素每次间隔的时间,默认0.5秒
ignored_exceptions 超时后需要输出的异常信息
WebDriverWait()下⾯有两个⽅法可⽤until()和until_not()
WebDriverWait(driver, timeout).until(method, message='')
method 函数或者实例__call__()⽅法返回True时停⽌,否则超时后抛出异常。
参数说明:
method 在等待时间内调⽤的⽅法或者函数,该⽅法或函数需要有返回值,并且只接收⼀个参数driver。
message 超时时抛出TimeoutException,将message传⼊异常显⽰出来
WebDriverWait(driver, timeout).until_not(method, message='')
于上⾯的until() 相反,until_not 中的method函数或者实例__call__()⽅法返回False结束,否则抛出异常。
until⽅法使⽤的method 的函数或者类__call()__⽅法详解:
函数我们⼀般采⽤匿名函数lambda 。
lambda driver:driver.find_element(<;定位元素>) # 当定位的元素时为True,⽆元素时为False。如⽰例1、2:
WebDriverWait⽰例1:
WebDriverWait(driver,5).until(lambda driver:driver.find_element_by_id('query'))
5秒内等待元素(id='query')出现,lambda driver:driver.find_element_by_id('query') 为⼀个匿名函数,只有⼀个driver参数,返回的是查的元素对象。
WebDriverWait⽰例2:
高通滤波WebDriverWait(driver, 5).until_not(lambda driver:driver.find_element_by_name('query'))
5秒内等待元素消失,同⽰例1 until_not 要求⽆元素返回即元素不存在于该页⾯。
四、expected_conditions 类库
from selenium.webdriver.support import expected_conditions as ec,它囊括了我们需要使⽤等待的所有情况。
ec.title_is(‘title’)判断页⾯标题等于title
ec.title_contains(‘title’)判断页⾯标题包含title
ec.presence_of_element_located(locator)等待locator元素是否出现
ec.presence_of_all_elements_located(locator)等待所有locator元素是否出现
ec.visibility_of_element_located(locator)等待locator元素可见
ec.invisibility_of_element_located(locator)等待locator元素隐藏
ec.visibility_of(element)等待element元素可见
<_to_be_present_in_element(locator,text)等待locator的元素中包含text⽂本
淮南三中
<_to_be_present_in_element_value(locator,value)等待locator元素的value属性为value
ec.frame_to_be_available_and_switch_to_it(locator)等待frame可切⼊
ec.element_to_be_clickable(locator)等待locator元素可点击
苏州蚕桑专科学校
等待元素被选中,⼀般⽤于复选框,单选框
ec.element_to_be_selected(element)等待element元素是被选中
ec.element_located_to_be_selected(locator)等待locator元素是被选中ec.element_selection_state_to_be(element,
is_selected)等待element元素的值被选中为is_selected(布尔值)
coredrawec.element_located_selection_state_to_be(locator,is_selected)等待locator元素的值是否被选中is_selected(布尔值)
五、什么时候使⽤等待
固定等待sleep与隐性等待implicitly_wait尽量少⽤,它会对测试⽤例的执⾏效率有影响。显性的等待WebDriverWait可以灵活运⽤,什么时候需要⽤到?
1、页⾯加载的时候,确认页⾯元素是否加载成功可以使⽤WebDriverWait花木马女装
2、页⾯跳转的时候,等待跳转页⾯的元素出现,需要选⼀个在跳转前的页⾯不存在的元素
3、下拉菜单的时候,如上百度搜索设置的下拉菜单,需要加上个时间断的等待元素可点击
4、页⾯刷新的时候
总之,页⾯存在改变的时候;页⾯上本来没的元素,然后再出现的元素

本文发布于:2024-09-23 01:28:05,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/124362.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:元素   等待   需要   设置   时间
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议