在python中使用selenium.webdriver.support.waitWebDriverWait()等待网页加载完成
在Python中使用webdriver.support.wait.WebDriverWait()方法可以等待网页加载完成。WebDriverWait类是selenium的等待方法之一,它可以在设定的时间内等待某个条件变为真,并且每隔一段时间检查一次条件是否满足。
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
# 创建Chrome浏览器实例
driver = webdriver.Chrome()
# 打开网页
driver.get('http://www.example.com')
# 隐式等待
driver.implicitly_wait(10)
# 显式等待
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.ID, 'example-element-id')))
在上面的例子中,首先需要导入selenium的webdriver库和WebDriverWait等待类,以及expected_conditions模块,该模块提供了一些预定条件,用于等待特定的元素或条件出现。
接下来,需要创建一个浏览器实例。在这个例子中,我们使用了Chrome浏览器,也可以使用其他浏览器,如Firefox。
然后,使用driver.get()方法打开一个网页。在这个例子中,我们打开了http://www.example.com网页。
接下来,我们使用了driver.implicitly_wait(10)方法来设置一个隐式等待时间,这个等待时间是全局的,该方法会在查找元素的时候等待指定的时间。
然后,我们创建了一个WebDriverWait对象,传入驱动和最长等待时间。在这个例子中,我们设置了一个最长等待时间为10秒。
最后,我们使用until()方法,传入一个期望条件。在这个例子中,我们使用了EC.presence_of_element_located()方法来等待一个元素的出现,该方法需要传入一种方式来定位元素。在这个例子中,我们使用了By.ID方法来使用元素的ID属性来定位元素。
需要注意的是,webdriver.support.wait.WebDriverWait()方法会在等待条件满足之后返回该元素。如果等待时间超过了指定的最长等待时间,那么将会抛出一个TimeoutException异常。
使用WebDriverWait等待方法可以使代码更加健壮,避免了因为网页加载过慢或元素尚未出现而导致的异常。
