Python Selenium 中的 WebDriverWait 类

2023-04-17 00:00:00 python selenium webdriverwait

WebDriverWait 类是 Python Selenium 中的一个等待方法,可以用于等待指定条件在浏览器中发生后再执行后面的代码。常见的等待条件包括元素可见、元素可点击、元素存在等。

使用 WebDriverWait 需要导入相应的库:

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

其中,expected_conditions 模块定义了一系列等待条件,By 模块定义了一系列查找元素的方式。

同时还需要获取一个 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


driver = webdriver.Chrome()
driver.get('https://www.google.com/')

# 等待搜索框可见
search_box = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.NAME, 'q')))

# 输入关键字,并提交搜索
search_box.send_keys('pidancode.com')
search_box.submit()

# 等待搜索结果页面出现
search_result = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//div[@id="search"]')))

# 检查搜索结果是否包含特定文字
assert 'pidancode.com' in search_result.text

driver.quit()

这个例子中,WebDriverWait 传入两个参数,第一个参数是浏览器实例,第二个参数是等待的超时时间,单位为秒。其中,until() 方法可以传入一个等待条件和查找元素的方式,该方法会一直等待,直到等待条件成立或超时时抛出异常。在这里,需要捕获超时异常和断言异常,以确保程序正确执行。

除了等待元素可见和文本相符,WebDriverWait 还提供了一系列 wait 函数,用于等待元素点击、存在、消失等情况。

总结:

  • WebDriverWait 是 Python Selenium 中用于等待指定条件的方法。
  • 需要导入 expected_conditions 模块和 By 模块。
  • 等待条件包括元素可见、元素可点击、元素存在等情况。
  • 除了等待元素可见和文本相符,还有一系列 wait 函数,满足不同需求。
  • 需要捕获超时异常和断言异常,以确保程序正确执行。

相关文章