python判断webdriver加载网页完毕
时间: 2023-07-26 11:50:25 浏览: 179
C#判断webbrowser页面最终加载完成
4星 · 用户满意度95%
在使用Selenium WebDriver加载网页时,可以通过以下两种方式来判断页面是否完全加载完成:
1. 使用`document.readyState`属性
`document.readyState`是浏览器中的一个属性,用于表示当前文档的状态。当值为`complete`时,表示文档已经完全加载完成。我们可以通过执行JavaScript代码来获取该属性的值,例如:
```python
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.example.com")
# 等待页面加载完成
while True:
if driver.execute_script("return document.readyState") == "complete":
break
```
在上面的代码中,我们使用了`driver.execute_script()`方法来执行JavaScript代码,并获取`document.readyState`属性的值。当值为`complete`时,表示页面已经加载完成,程序会跳出循环。
这种方式的缺点是需要手动编写循环来等待页面加载完成,如果页面加载时间过长,可能会导致程序长时间阻塞。
2. 使用`WebDriverWait`对象
Selenium WebDriver提供了一个`WebDriverWait`类,可以方便地等待某个条件的出现。我们可以使用该类来等待页面加载完成,例如:
```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("http://www.example.com")
# 等待页面加载完成
wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.TAG_NAME, "body")))
```
在上面的代码中,我们使用了`WebDriverWait`类来等待页面中`<body>`标签的出现,从而判断页面是否加载完成。`wait.until()`方法会一直等待,直到指定的条件出现或等待超时。在这里,我们设置了最长等待时间为10秒钟。
这种方式的优点是可以自动等待页面加载完成,不需要手动编写等待代码,同时也避免了程序长时间阻塞。
阅读全文