webdriver 等待页面加载完成_selenium(十)脚本中的延时等待处理
时间: 2023-09-03 09:13:34 浏览: 59
好的,关于 Selenium 中的延时等待处理,一般有以下三种方式:
1. 隐式等待(Implicit Wait)
隐式等待是设置一个全局的等待时间,即在查找元素时,如果 DOM 中没有找到,将等待一段时间再查找,直到超时。可以使用 `driver.implicitly_wait(time_to_wait)` 来设置等待时间,单位是秒。
例如:
```
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(10) # 设置等待时间为10秒
driver.get("https://www.baidu.com")
ele = driver.find_element_by_css_selector("#kw")
ele.send_keys("Selenium")
```
这里设置了一个 10 秒的隐式等待时间,如果在 10 秒内没有找到元素,则会抛出 `NoSuchElementException` 异常。
2. 显式等待(Explicit Wait)
显式等待是针对某个特定的元素等待一段时间,直到它可见或可用。可以使用 `WebDriverWait` 类和 `expected_conditions` 模块来实现显式等待。
例如:
```
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")
ele = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, "#kw"))
)
ele.send_keys("Selenium")
```
这里使用了 `WebDriverWait` 类和 `expected_conditions` 模块,等待元素出现在 DOM 中,最长等待时间为 10 秒。
3. 硬等待(Time.sleep())
硬等待就是直接使用 `time.sleep()` 方法强制等待一段时间,代码如下:
```
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
time.sleep(10) # 等待10秒
ele = driver.find_element_by_css_selector("#kw")
ele.send_keys("Selenium")
```
尽量不要使用硬等待,因为它不灵活,而且在等待时间不够或者过长时都会有问题。建议使用隐式等待或显式等待来代替硬等待。
阅读全文