1、WebDriverWait基本用法
引入包
# 文件引入 from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC
每0.5s定位ID为userid的元素,如果定位成功,执行下面的代码;直至15s超时抛出异常 可用来检查页面元素是否加载完成
# 每0.5s定位ID为userid的元素,如果定位成功,执行下面的代码;直至15s超时抛出异常 # 可用来检查页面元素是否加载完成 WebDriverWait(driver, 15, 0.5).until(EC.presence_of_element_located(By.ID, "id"))
until中为条件,直到条件实现,等待结束,否则抛出异常
presence_of_element_located(locator):等待元素出现在DOM中,例如(By.ID,"id")、(By.NAME,"name") visibility_of_element_located(locator):等待元素在页面中可见,即它不仅存在于DOM中,而且还在视觉上可见 element_to_be_clickable(locator):等待元素可以被点击 text_to_be_present_in_element(locator, text):等待元素中包含特定的文本
2、显示等待高级用法
2.1 alert_is_present():判断页面是否出现alert框
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions #alert_is_present():判断页面是否出现alert框 res = WebDriverWait(driver,10).until(expected_conditions.alert_is_present()) print(res.text)
2.2 element_located_selection_state_to_be(locator,state):判断一个元素的状态是否是给定的选择状态
第一个传入参数是一个定位器,定位器是一个元组(by,path);第二个传入参数表示期望的元素状态,True表示选中状态,Flase表示未选中
# element_located_selection_state_to_be():判断一个元素的状态是否是给定的选择状态 res = WebDriverWait(driver,10).until(expected_conditions.element_located_selection_state_to_be((By.ID,'id'),True))
2.3 element_selection_state_to_be(driverObject,state):判断给定的元素是否被选中
第一个传入参数是一个webdriver对象,第二个参数是期望的元素的状态,True表示选中状态,Flase表示未选中
# element_selection_state_to_be():判断给定的元素是否被选中 res = WebDriverWait(driver,10).until(expected_conditions.element_selection_state_to_be((driver.find_element_by_id('id')),True))
2.4 element_located_to_be_selected(locator):期望某个元素处于被选中状态
参数传入的是一个定位器
#element_located_to_be_selected():期望某个元素处于被选中状态 res = WebDriverWait(driver,10).until(expected_conditions.element_located_to_be_selected((By.ID,'id')))
2.5 element_to_be_selected():期望某个元素处于选中状态
传入参数是一个webdriver实例对象
#element_to_be_selected():期望某个元素处于选中状态 res=WebDriverWait(driver,10).until(expected_conditions.element_to_be_selected(driver.find_element_by_id('id')))
2.6 element_to_be_clickable():判断元素是否可见并且能被单击,条件满足返回页面元素对象,否则返回Flase
#element_to_be_clickable():判断元素是否可见并且能被单击,条件满足返回页面元素对象,否则返回Flase res=WebDriverWait(driver,10).until(expected_conditions.element_to_be_clickable(driver.find_element_by_id('id')))
2.7 frame_to_be_available_and_switch_to_it(parm):判断frame是否可用
如果可用返回True并切入到该frame,参数parm可以是定位器locator(by,path)组成的元组,或者定位方式:id、name、index(frame在页面上索引号),或者webelement对象
#frame_to_be_available_and_switch_to_it():判断frame是否可用 #传入ID值‘id’ res1=WebDriverWait(driver,10,0.2).until(EC.frame_to_be_available_and_switch_to_it(By.ID,'id')) #传入frame的webelement对象 res2=WebDriverWait(driver,10,0.2).until(EC.frame_to_be_available_and_switch_to_it(driver.find_element_by_id('id'))) #传入frame在页面中索引号 res3=WebDriverWait(driver,10,0.2).until(EC.frame_to_be_available_and_switch_to_it(1))
2.8 invisibility_of_element_located(*locator*):希望某个元素不可见或者不存在DOM中
满足条件返回True,否则返回定位到的元素对象
#invisibility_of_element_located():希望某个元素不可见或者不存在DOM中,满足条件返回True,否则返回定位到的元素对象 res=WebDriverWait(driver,15,0.5).until(EC.invisibility_of_element_located(By.ID,'id'))
2.9 presence_of_all_elements_located(*locator*):判断页面至少有一个如果元素出现,如果满足条件,返回所有满足定位表达式的页面元素
#presence_of_all_elements_located():判断页面至少有一个如果元素出现,如果满足条件,返回所有满足定位表达式的压面元素 res=WebDriverWait(driver,10,0.2).until(EC.presence_of_all_elements_located(By.ID,'id'))
2.10 presence_of_element_located(locator):判断某个元素是否存在DOM中,不一定可见,存在返回该元素对象
#presence_of_element_located():判断某个元素是否存在DOM中,不一定可见,存在返回该元素对象 res=WebDriverWait(driver,10,0.2).until(EC.presence_of_element_located(By.ID,'id'))
2.11 staleness_of(webelement):判断一个元素是否仍在DOM中,如果在规定时间内已经移除返回True,否则返回Flase
#staleness_of():判断一个元素是否仍在DOM中,如果在规定时间内已经移除返回True,否则返回Flase res=WebDriverWait(driver,10,0.2).until(EC.staleness_of(driver.find_element_by_id('id')))
2.12 text_to_be_present_in_element():判断文本内容test是否出现在某个元素中,判断的是元素的text
#text_to_be_present_in_element():判断文本内容是否出现在某个元素中,判断的是元素的text res=WebDriverWait(driver,15,0.5).until(EC.text_to_be_present_in_element(By.TAG_NAME,"text"))
2.13 text_to_be_present_in_element_value():判断text是否出现在元素的value属性值中
#text_to_be_present_in_element_value():判断text是否出现在元素的value属性值中 res=WebDriverWait(driver,10,0.2).until(EC.text_to_be_present_in_element_value((By.ID,'id'),'姓名'))
2.14 title_contains():判断页面title标签的内容包含partial_title,只需要部分匹配即可
#title_contains():判断页面title标签的内容包含partial_title,只需要部分匹配即可,包含返回True,不包含返回Flase res=WebDriverWait(driver,10,0.2).until(EC.title_contains("姓名"))
2.16 title_is():判断页面title内容是与传入的title_text内容完全匹配
#title_is():判断页面title内容是与传入的title_text内容完全匹配,匹配返回True,否则返回Flase res=WebDriverWait(driver,10,0.2).until(EC.title_is("姓名"))
- WebDriverWait Unittest Selenium Python3 Pythonwebdriverwait unittest selenium python3 unittest selenium property python3 unittest selenium python3 python unittest selenium python3环境 unittest selenium元素python3 unittest selenium python3页面 uiautomation unittest桌面python3 htmltestrunner unittest selenium python webdriverwait webdriver selenium selenium4 selenium python3文件