隐式等待(Implicit Wait)是告诉WebDriver在抛出找不到元素的异常之前,应该等待的时间。如果在设置的时间内找到了元素,就会立即继续执行;如果没找到,就会抛出一个异常。
示例代码:
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(10) # 10秒的隐式等待
driver.get("http://www.example.com")
# 如果元素在10秒内出现,就会继续执行;否则抛出NoSuchElementException
element = driver.find_element_by_id("some-id")
显式等待(Explicit Wait)则更加灵活,允许你为特定的条件设定等待时间。显式等待会定期检查条件是否成立,直到满足条件或超过最大等待时间。
示例代码:
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("http://www.example.com")
try:
# 设置显式等待,最多等待10秒,直到找到指定的元素
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "some-id"))
)
finally:
driver.quit()