欢迎访问宙启技术站
智能推送

Python中使用WebDriverWait()等待元素文字改变

发布时间:2023-12-24 16:27:28

在使用Selenium WebDriver进行自动化测试时,常常需要等待某个元素的文字或状态发生改变。为了解决这个问题,Python提供了WebDriverWait类,可以通过指定条件来等待元素改变。

WebDriverWait类是webdriver.support.ui模块中的一个类,用于设置等待条件。在使用WebDriverWait之前,需要先导入该类,并创建一个WebDriverWait对象,指定WebDriver和超时时间。

下面是使用WebDriverWait等待元素文字改变的示例代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 创建WebDriver对象
driver = webdriver.Chrome()

# 打开网页
driver.get('https://www.example.com')

# 等待元素出现并保存其初始文字
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, 'element-id'))
)
initial_text = element.text

# 修改元素的文字
element.clear()
element.send_keys('New Text')

# 等待元素文字改变
WebDriverWait(driver, 10).until(
    EC.text_to_be_present_in_element((By.ID, 'element-id'), 'New Text')
)

# 其他测试代码...

# 关闭浏览器
driver.quit()

在上述代码中,我们首先使用WebDriverWait等待元素出现,并保存其初始文字。然后,修改元素的文字,并使用WebDriverWait等待元素文字改变,直到元素的文字变成了'New Text',才会继续执行后面的测试代码。

WebDriverWaituntil方法中,我们使用了EC.text_to_be_present_in_element条件,该条件需要传入两个参数:元素定位器和期望文字。在等待过程中,WebDriverWait会不断检查元素的文字是否包含期望文字,直到满足条件或超时。如果超时时间到了但条件依然未满足,WebDriverWait会抛出TimeoutException异常。

除了EC.text_to_be_present_in_element条件外,WebDriverWait还提供了许多其他条件,可以根据需要选择适合的条件。比如:

- EC.element_to_be_clickable:元素可点击

- EC.presence_of_element_located:元素存在

- EC.visibility_of_element_located:元素可见

- EC.invisibility_of_element_located:元素不可见

- EC.title_contains:标题包含指定文字

- EC.url_contains:URL包含指定文字

- EC.alert_is_present:弹窗出现

以上就是在Python中使用WebDriverWait等待元素文字改变的示例。根据实际情况选择适合的条件,可以提高自动化测试的稳定性和可靠性。