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 函数,满足不同需求。
- 需要捕获超时异常和断言异常,以确保程序正确执行。
相关文章