Web自动化测试:WebDriverWait元素等待和全局设置
2021-01-26 02:16
标签:windows element app 否则 contains rip 条件 加载 mon 1)关于全局设置超时时间 设置全局元素查找的超时时间 implicitly_wait(time_to_wait) set_script_timeout(time_to_wait) set_page_load_timeout(time_to_wait) 2.1基础格式(webDriverWait+until+(判断条件)): 这个格式的结构有点像语言中主谓宾的结构,实例的意思是,程序每0.5秒检查,是否满足:标题包含“百度一下”这个条件,检查是否满足条件的最长时间为:15秒,超过15秒仍未满足条件则抛出异常 WebDriverWait(driver, 15, 0.5).until(expected_conditions.title_contains("百度一下")) from selenium.webdriver.support.ui import WebDriverWait 满足条件后继续执行,否则在设置时间过后抛出异常 WebDriverWait(driver, timeout, poll_frequency=POLL_FREQUENCY, ignored_exceptions=None) driver 所创建的浏览器driver 直到调用的方法返回值为True until(method, message=‘‘) method:expected_conditions库中定义的方法 until_not(method, message=‘‘) method:expected_conditions库中定义的方法 title_is(title) title:期望的页面标题 title_contains(title) title:期望的页面标题 presence_of_element_located(locator) locator:元素的定位信息 url_contains(url) url:期望的页面网址 url_to_be(url) url:期望的页面网址 url_changes(url) url:期望的页面网址 visibility_of_element_located(locator) locator:元素的定位信息 visibility_of(element) element:所获得的元素 presence_of_all_elements_located(locator) locator:元素的定位信息 visibility_of_any_elements_located(locator) locator:元素的定位信息 visibility_of_all_elements_located(locator) locator:元素的定位信息 text_to_be_present_inelement(locator, text) locator:元素的定位信息 text_to_be_present_in_elementvalue(locator, text) locator:元素的定位信息 frame_to_be_available_and_switch_to_it(locator) locator:元素的定位信息 invisibility_of_element_located(locator) locator:元素的定位信息 invisibility_of_element(element) element:所获得的元素 element_to_be_clickable(locator) locator:元素的定位信息 staleness_of(element) element:所获得的元素 element_to_be_selected(element) element:所获得的元素 element_located_to_be_selected(locator) locator:元素的定位信息 element_selection_state_to_be(element,Boolean) element:所获得的元素 element_located_selection_state_to_be(locator,Boolean) locator:元素的定位信息 number_of_windows_to_be(num) num:期望的页签数量 new_window_is_opened(handles) handles:页签 alert_is_present() 3)案例演示 from selenium import webdriver driver = webdriver.Chrome() # 部分关于元素定位的判断返回类型为:元素 # 大部分方法返回类型为True\False # 判断失败后会报错 返回类型 Web自动化测试:WebDriverWait元素等待和全局设置 标签:windows element app 否则 contains rip 条件 加载 mon 原文地址:https://blog.51cto.com/14645850/2508317
三个全局设置时间的方法中,设置的时间单位为秒,例如implicitly_wait(30),意思是超过30秒没有定位到一个元素,程序就会报错抛出异常,期间会一直轮询查找定位元素。
time_to_wait:超时时间(秒)
设置全局js异步脚本超时时间
time_to_wait:超时时间(秒)
设置全局页面载入超时时间
time_to_wait:超时时间(秒)
2)关于WebDriverWait的使用以及方法介绍(显示等待)
WebDriverWait可以当做元素等待,灵活的设置查找元素时的判断条件,同时由于方法中包含了大量webdriver自带的判断方法,只返回True和False,所以也可以灵活的当做断言来使用。
2.2导入库
from selenium.webdriver.support import expected_conditions
2.3WebDriverWait
timeout 最长时间长度(默认单位:秒)
poll_frequency 间隔检测时长(每)默认0.5秒
ignored_exceptions 方法调用中忽略的异常,默认只抛出:找不到元素的异常
2.4 until / until_not
message :自定义报错信息
直到调用的方法返回值为False
message :自定义报错信息
2.5 expected_conditions库中的方法
判断当前页面标题是否为title
判断当前页面标题是否包含title
判断此定位的元素是否存在
判断页面网址中是否包含url
判断页面网址是否为url
判断页面网址不是url
判断此定位的元素是否可见
判断此元素是否可见
判断此定位的一组元素是否至少存在一个
判断此定位的一组元素至少有一个可见
判断此定位的一组元素全部可见
判断此定位中是否包含text_的内容
text_:期望的文本信息
判断此定位中的value属性中是否包含text_的内容
text_:期望的文本信息
判断定位的元素是否为frame,并直接切换到这个frame中
判断定位的元素是否不可见
判断此元素是否不可见
判断所定位的元素是否可见且可点击
判断此元素是否不可用
判断该元素是否被选中
判断定位的元素是否被选中
判断该元素被选中状态是否和期望状态相同
Boolean:期望的状态(True/False)
判断定位的元素被选中状态是否和期望状态相同
Boolean:期望的状态(True/False)
判断当前浏览器页签数量是否为num
判断此handles页签不是唯一打开的页签
判断是否会出现alert窗口警报
这里主要展示下WebDriverWait中,大部分的返回类型是True\False,部分方法,例如presence_of_element_located返回类型为一个元素,我们可以定位元素之后,直接对返回的元素进行click、send_keys等操作
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as Expect
driver.get("https://tieba.baidu.com")
assert_ele = WebDriverWait(driver, 15, 0.5).until(Expect.presence_of_element_located(("id", "wd1")))
assert_ele.send_keys("测试")
print("返回类型 %s" % assert_ele)
assert_judge = WebDriverWait(driver, 15, 0.5).until_not(Expect.title_is("网易"))
print("返回类型 %s" % assert_judge)
assert_judge = WebDriverWait(driver, 5, 0.5).until(Expect.title_is("网易"), "错误信息:网页标题不是网易")
运行结果:
返回类型 False
Traceback (most recent call last):
File "D:/1git/cenpur_uitest/test_case/demo.py", line 17, in
assert_judge = WebDriverWait(driver, 5, 0.5).until(Expect.title_is("网易"), "错误信息:网页标题不是网易")
File "C:\Users\test\AppData\Local\Programs\Python\Python35\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 错误信息:网页标题不是网易
文章标题:Web自动化测试:WebDriverWait元素等待和全局设置
文章链接:http://soscw.com/index.php/essay/47076.html