中博建设集团有限公司网站,楚风网站建设工作室,wordpress中文插件seo百度,网站建设深圳官网#x1f345; 点击文末小卡片#xff0c;免费获取软件测试全套资料#xff0c;资料在手#xff0c;涨薪更快一、强制等待1.设置完等待后不管有没有找到元素#xff0c;都会执行等待#xff0c;等待结束后才会执行下一步2.实例#xff1a;driver webdriver.Chrome()driv…点击文末小卡片免费获取软件测试全套资料资料在手涨薪更快一、强制等待1.设置完等待后不管有没有找到元素都会执行等待等待结束后才会执行下一步2.实例driver webdriver.Chrome() driver.get(https://www.baidu.com) time.sleep(3) # 设置强制等待 driver.quit()二、隐性等待1.设置全局等待对每个查询的元素都生效当页面元素没有第一时间找到会等待implicitly_wait设置的时间时间过后再查找一次要是还没找到就报错。2.实例三、显性等待1.WebDriverWait类1导入webdriverwait类from selenium.webdriver.support.wait import WebDriverWait2实例化WebDriverWaitwait WebDriverWait(driver, 10, 2) # 10为等待时间2为在10s内每过2s去判断一次selenium提供了WebdriverWait类用于针对指定的元素设置等待其中内含until和until_not两个方法判断。3until(self, method, message: str ) 函数methon为判断条件若返回true则判断成功返回false判断失败打印message信息。message为判断失败时打印的信息可写可不写。driver webdriver.Chrome() driver.get(https://www.baidu.com) wait WebDriverWait(driver, 10, 2) # 设置显性等待 wait.until(判断条件, 返回false时打印的信息) driver.quit()4until_not(self, method, message: str ) 函数until_not效果与until相反返回false时判断成功返回true时判断失败。driver webdriver.Chrome() driver.get(https://www.baidu.com) wait WebDriverWait(driver, 10, 2) # 设置显性等待 wait.until_not(判断条件, 返回true时打印的信息) driver.quit()5判断条件通常与expected_conditions连用内部封装了判断方法。expected_conditions的具体用法我们接着往下看。2.expected_conditions下面介绍expected_conditions模块下所有的函数用法1title_is精准匹配页面标题匹配成功返回true失败返回falsefrom selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support.expected_conditions import * option webdriver.ChromeOptions() option.add_argument(--headless) # 设置无窗口模式 driver webdriver.Chrome(optionsoption) brdriver.get(https://www.baidu.com) brwait WebDriverWait(driver, 10, 2) # 设置显性等待 brwait.until(title_is(百度一下你就知道)) # 精准匹配标题 brdriver.quit()2title_contains模糊匹配标题匹配成功返回true失败返回falsefrom selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support.expected_conditions import * option webdriver.ChromeOptions() option.add_argument(--headless) # 设置无窗口模式 driver webdriver.Chrome(optionsoption) driver.get(https://www.baidu.com) wait WebDriverWait(driver, 10, 2) # 设置显性等待 wait.until(title_contains(百度)) # 模糊匹配标题 driver.quit()3presence_of_element_located判断定位的元素是否存在可见和隐藏元素存在返回true否则返回false。from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support.expected_conditions import * option webdriver.ChromeOptions() option.add_argument(--headless) # 设置无窗口模式 driver webdriver.Chrome(optionsoption) driver.get(https://www.baidu.com) wait WebDriverWait(driver, 10, 2) # 设置显性等待 wait.until(presence_of_element_located((By.ID, kw)), 不存在) # 判断元素是否存在可见和隐藏元素都可判断 driver.quit()4url_contains判断页面url地址是否包含预期结果满足预期返回true不满足返回false。from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support.expected_conditions import * option webdriver.ChromeOptions() option.add_argument(--headless) # 设置无窗口模式 driver webdriver.Chrome(optionsoption) driver.get(https://www.baidu.com) wait WebDriverWait(driver, 10, 2) # 设置显性等待 wait.until(url_contains(baidu1), 不包含) # 检测当前页面url地址是否包含预期结果 driver.quit()5url_matches判断当前页面地址是否包含预期结果内填写正则表达式满足预期返回true不满足返回false。from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support.expected_conditions import * option webdriver.ChromeOptions() option.add_argument(--headless) # 设置无窗口模式 driver webdriver.Chrome(optionsoption) driver.get(https://www.baidu.com) wait WebDriverWait(driver, 10, 2) # 设置显性等待 wait.until(url_matches(baidu), 不包含) # 检测当前页面url地址是否包含预期结果,内填写正则表达式 driver.quit()6url_to_be精准判断url若相同返回true不同返回falsefrom selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support.expected_conditions import * option webdriver.ChromeOptions() option.add_argument(--headless) # 设置无窗口模式 driver webdriver.Chrome(optionsoption) driver.get(https://www.baidu.com) wait WebDriverWait(driver, 10, 2) # 设置显性等待 wait.until(url_to_be(https://www.baidu.com/), 不存在) # 精准判断url driver.quit()7url_changes精准判断url若相同返回false不同返回true。from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support.expected_conditions import * option webdriver.ChromeOptions() option.add_argument(--headless) # 设置无窗口模式 driver webdriver.Chrome(optionsoption) driver.get(https://www.baidu.com) wait WebDriverWait(driver, 10, 2) # 设置显性等待 wait.until(url_changes(https://www.baidu.c), 相等) # 精准匹配url不相等 driver.quit()8visibility_of_element_located判断定位的元素是否存在只能判断可见元素存在返回true不存在返回false。from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support.expected_conditions import * option webdriver.ChromeOptions() option.add_argument(--headless) # 设置无窗口模式 driver webdriver.Chrome(optionsoption) driver.get(https://www.baidu.com) wait WebDriverWait(driver, 10, 2) # 设置显性等待 wait.until(visibility_of_element_located((By.ID, kw)), 不存在) # 判断元素是否存在只适用于可见元素 driver.quit()9visibility_of判断元素是否存在只能判断可见元素from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support.expected_conditions import * option webdriver.ChromeOptions() option.add_argument(--headless) # 设置无窗口模式 driver webdriver.Chrome(optionsoption) driver.get(https://www.baidu.com) wait WebDriverWait(driver, 10, 2) # 设置显性等待 element_id driver.find_element(byBy.ID, valuekw) wait.until(visibility_of(element_id), 不存在) # 判断元素是否存在只适用于可见元素 driver.quit()此方法与visibility_of_element_located判断结果相同只是传递参数不同visibility_of传元素visibility_of_element_located传元组10presence_of_all_elements_located判断页面至少有一个定位的元素存在可见和隐藏元素都会判断。wait.until(presence_of_all_elements_located((By.TAG_NAME, span)), 没有一个存在) # 判断页面至少有一个定位的元素存在可见和隐藏元素都会判断11visibility_of_any_elements_located判断页面至少有一个定位的元素存在且为可见元素。wait.until(visibility_of_any_elements_located((By.TAG_NAME, span)), 没有一个存在) # 判断页面至少有一个定位的元素存在且为可见元素12visibility_of_all_elements_located判断定位的元素全部可见。wait.until(visibility_of_all_elements_located((By.TAG_NAME, span)), 不可见) # 判断定位的元素全部可见13text_to_be_present_in_element模糊匹配文本值。wait.until(text_to_be_present_in_element((By.XPATH, //span[contains(text(),123)]), 124), 匹配不成功) # 模糊匹配元素文本值14text_to_be_present_in_element_value模糊匹配定位元素的value值。wait.until(text_to_be_present_in_element_value((By.XPATH, //input[idsu]), 百度一下), 匹配错误) # 模糊匹配元素value值15text_to_be_present_in_element_attribute模糊匹配定位元素指定属性的属性值。wait.until(text_to_be_present_in_element_attribute((By.XPATH, //input[idkw]), name, w), 匹配错误) # 模糊匹配定位元素指定属性的属性值16frame_to_be_available_and_switch_to_it判断frame是否可以切换switch_to.frame()。wait.until(frame_to_be_available_and_switch_to_it((By.XPATH, elenment)), 不可切换) # 判断frame是否可以切换17invisibility_of_element_located判断定位的元素是否不可见或者不存在不可见返回true反之返回falsewait.until(invisibility_of_element_located((By.TAG_NAME, span)), 错误) # 判断元素是否不可见/不存在不可见返回true18invisibility_of_element判断元素是否不可见或者不存在不可见返回true反之返回false。spandriver.find_element(By.TAG_NAME, span) wait.until(invisibility_of_element(span), 错误) # 判断元素是否不可见或者不存在不可见返回true反之返回false与invisibility_of_element_located用法相同只是传递参数不同一个传元素一个传元组。19element_to_be_clickable判断定位的元素是否可点击wait.until(element_to_be_clickable((By.ID, su)), 错误) # 判断定位的元素是否可点击20staleness_of判断元素是否存在存在若在等待的时间内被移除则返回truespan driver.find_element(By.ID, su) wait.until(staleness_of(span), 错误) # 判断元素是否存在存在若在等待的时间内被移除则返回true这里注意的是传递的参数是元素。21element_to_be_selected判断元素是否被选中iddriver.find_element(byBy.XPATH, value//option[contains(text(),2)]) wait.until(element_to_be_selected(id),失败) # 判断可见元素是否选中这里注意的是传递的参数是元素。22element_located_to_be_selected判断定位的元素是否被选中选中返回true未选中返回false。wait.until(element_located_to_be_selected((By.XPATH, //option[contains(text(),1)])),失败) # 判断定位的元素是否被选中与element_to_be_selected用法相同不同的是传递的是元组。23element_selection_state_to_be判断元素选中的状态是否符合预期iddriver.find_element(byBy.XPATH, value//option[contains(text(),2)])brbrwait.until(element_selection_state_to_be(id,False),选中了) # 判断元素是否被选中并给出预期结果与element_selection_state_to_be用法相同不同的是传递的元组。25number_of_windows_to_be判断当前打开的窗口是否符合预期。wait.until(number_of_windows_to_be(1),不是一个) # 期望当前打开的窗口数为几个26new_window_is_opened判断是否新打开了一个窗口。hand driver.window_handles # 获取当前所有窗口的柄句 print(len(hand)) driver.find_element(byBy.XPATH, value//a[contains(text(),新闻)]).click() wait.until(new_window_is_opened(hand)) # 判断是否打开了一个新窗口27alert_is_present判断页面是否有alert。wait.until(alert_is_present(),没有alert) # 判断页面是否有alert28element_attribute_to_include判断定位的元素是否存在预期的属性值。这个我们就不做多余的介绍了因为本身封装的就有问题我们先来看下封装的原代码通过get_attribute(attribute_)获取属性值若为none则返回false否则返回不为none其实这点是存在问题的因为get_attribute(attribute_)当属性不存在时是什么都不会返回的更不会返回none。29any_of判断多个条件满足一个为true的话就返回true相当于or逻辑wait.until(any_of(alert_is_present(), element_attribute_to_include((By.TAG_NAME, a), name)), 没有一个符合要求的) # 多个判断条件有一个返回true则返回Trueor逻辑30all_of判断多个条件必须都满足为true的话才返回true相当于and逻辑wait.until(all_of(alert_is_present(), element_attribute_to_include((By.TAG_NAME, a), name))) # 多个判断条件必须都满足Trueand逻辑31none_of判断多个条件都返回false时才能判断成功返回truewait.until(none_of(alert_is_present(), element_attribute_to_include((By.TAG_NAME, a), name))) # 判断多个条件都返回flase时返回true有一个返回true时则返回false最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走这些资料对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你凡事要趁早特别是技术行业一定要提升技术功底。