selenium显式等待
时间: 2023-07-12 20:38:25 浏览: 226
Selenium的显式等待是一种更加灵活的等待方式,它可以针对不同的元素设置不同的等待条件。显式等待的基本思想是在查找元素时设置一个最长的等待时间,同时指定一个条件,如果在规定时间内满足了这个条件,就返回查找到的元素;如果超时了仍然没有满足条件,就抛出异常。
在Selenium中,可以使用 WebDriverWait 和 expected_conditions 类来实现显式等待。WebDriverWait 是一个等待类,它可以指定一个等待时间和一个期望条件,当期望条件满足时,就返回查找到的元素;如果超时了仍然没有满足条件,就抛出异常。
expected_conditions 类提供了一些常用的条件,例如元素可见、元素存在、元素可点击等。我们可以根据需要选择不同的条件来实现显式等待。
下面是一个使用显式等待的示例:
```python
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.baidu.com")
# 等待输入框出现并输入关键字
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "kw"))
)
element.send_keys("Selenium")
# 等待搜索按钮出现并点击
element = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.ID, "su"))
)
element.click()
# 等待搜索结果出现并输出标题
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//h3[@class='t']"))
)
print(element.text)
driver.quit()
```
在这个示例中,我们使用了三个不同的条件来实现显式等待:presence_of_element_located、element_to_be_clickable 和 text_to_be_present_in_element。这些条件都是 expected_conditions 类提供的常用条件之一。当满足这些条件时,就会返回查找到的元素,否则就会抛出异常。
阅读全文