在Python提供expected_conditions库中,分享一些常用的显示等待条件

本文探讨了如何使用Python进行页面标题判断(title_is, title_contains)、元素可见性检查(visibility_of_element_located, visibility_of_all_elements_located)以及自动化测试中的条件判断。重点讲解了如何通过Selenium库实现网页元素的查找和状态验证,适用于前端开发者和测试工程师的工作实践。

title_is():

判断当前页面的标题是否等于某个字符串,相等则条件成立,条件成立返回bool值Ture,如果在设置的等待时间内条件一直不成立,则超时报错。
title_contains():

判断当前页面的标题是否包含某个字符串,包含则条件成立,条件成立返回bool值Ture,如果在设置的等待时间内条件一直不成立,则超时报错。
presence_of_element_located():

判断某个元素是否出现,传参为元组,在设置的等待时间内元素出现则条件成立并返回元素对象,否则超时报错。
visibility_of_element_located():

判断某个元素是否出现且该元素为非隐藏的且宽和高都不为0的元素,传参为元组,在设置的等待时间内元素出现则条件成立并返回元素对象,否则超时报错。
 presence_of_all_elements_located():

判断多个元素是否出现,传参为元组,在设置的等待时间内元素出现则条件成立并返回元素对象列表,否则超时报错。
visibility_of_all_elements_located():

判断多个元素是否出现且所有元素为非隐藏的且宽和高都不为0的元素,传参为元组,在设置的等待时间内元素出现则条件成立并返回元素对象列表,否则超时报错。
visibility_of_any_elements_located():

判断多个元素是否出现且至少有一个元素为非隐藏的且宽和高都不为0的元素,传参为元组,在设置的等待时间内元素出现则条件成立并返回元素对象列表,否则超时报错。
text_to_be_present_in_element():

判断某个元素上的文本是否包含某个字符串,包含则条件成立,条件成立返回bool值Ture,如果在设置的等待时间内条件一直不成立,则超时报错。
text_to_be_present_in_element_value():

判断某个元素上的value属性值是否包含某个字符串,包含则条件成立,条件成立返回bool值Ture,如果在设置的等待时间内条件一直不成立,则超时报错。
frame_to_be_available_and_switch_to_it():

判断某个框架是否可以切入,可以则直接切入。条件成立返回bool值Ture,如果在设置的等待时间内条件一直不成立,则超时报错。
该动态条件有两种传参方式:1、元组(By.TAGNAME,"iframe") 2、与switch_to_.frame()一样
alert_is_present():

判断网页上是否存在警告窗口,如果存在则返回该警告窗口对象,否则超时报错。
element_to_be_clickable():

判断某个元素是否可以点击,传参为元组,在设置的等待时间内元素出现且可以点击则条件成立并返回元素对象,否则超时报错。
new_window_is_opened():

判断是否有新网页打开,如果设置的时间内条件成立返回True,不成立超时报错
number_of_windows_to_be():

判断当前打开的页面的数量是否等于某个数值,如果设置的时间内条件成立返回True,不成立超时报错 
 

`WebDriverWait`是Selenium WebDriver的一个重要辅助类,它允许我们在特定条件下对网页元素进行等待,直到满足预先设置的期望条件(`expected_conditions`)。这样做的目的是解决因为页面动态加载、Ajax请求等造成的元素不在DOM树中或者尚未呈现的问题,避免了频繁的`time.sleep()`带来的不稳定性和效率低下。 `expected_conditions`提供了一系列预定义的条件检查函数,常用的有: 1. `presence_of_element_located(locator)`:等待指定元素首次出现在DOM中。 2. `visibility_of_element_located(locator)`:等待元素变为可见并且能够交互。 3. `element_to_be_clickable(locator)`:等待元素变为可点击状态,适合等待按钮、链接等。 4. `text_to_equal(text)`:等待元素内的文本等于给定的值。 5. `invisible_timeout(seconds)`:设置隐式等待超时时间。 使用方法通常是这样的: ```python from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 初始化WebDriverWait wait = WebDriverWait(driver, 10) # 设置等待时间,单位秒 # 等待元素出现 element = wait.until(EC.presence_of_element_located((By.ID, "myElement"))) # 确保元素可见并可点击 element = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[@id='clickMe']"))) # 等待元素文本改变 new_text = wait.until(EC.text_to_equal("#myText", "New Text")) ``` 使用`WebDriverWait`和`expected_conditions`组合能大大提高代码的稳定性和可读性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值