帮我写一份selenium等待页面加载完成的代码
时间: 2024-10-22 16:11:04 浏览: 25
在Selenium中,我们通常使用`WebDriverWait`来实现页面元素加载完成后的等待。以下是一个基本的例子,使用Python语言和ChromeDriver,假设我们要等待的是整个网页完全加载完成(通常基于`document.readyState`判断):
```python
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
def wait_for_page_to_load(driver, timeout=10):
# 创建一个WebDriverWait实例,设置超时时间(单位秒)
wait = WebDriverWait(driver, timeout)
# 使用EC.presence_of_element_located等待某个默认存在的元素
# 如果页面未完全加载,此元素可能不存在,会引发TimeoutException
try:
wait.until(EC.presence_of_all_elements_located((By.TAG_NAME, "html"))) # 等待HTML标签存在
except TimeoutException:
print("页面加载超时")
# 在需要的地方调用这个函数,传入driver对象
driver = webdriver.Chrome() # 首先初始化浏览器驱动
driver.get("http://example.com") # 访问目标URL
wait_for_page_to_load(driver)
```
如果你想要等待特定的JavaScript代码运行完成(比如Ajax请求),可以使用`expected_conditions.visibility_of()`或`expected_conditions.invisibility_of_element_located()`。
阅读全文