首页 > 解决方案 > 如何使用 Selenium WebDriver (Chrome) 打开页面,而无需等待它在 Python 中加载?

问题描述

driver.get(URL)函数在返回执行之前等待页面完成加载。

在 Java 中有一个方法driver.navigate().to(URL),它不等待页面加载,但是,我在 Python 中找不到这样的方法。

对于 Firefox,我可以运行profile.set_preference("webdriver.load.strategy", "unstable"),但是 Chrome 没有这样的偏好。

还有driver.set_page_load_timeout(0.2)withTimeoutException处理 但是,当异常被处理时,chrome 驱动程序停止加载页面。

编辑:稍微改述了这个问题并添加了一个不起作用的解决方案。

标签: pythonseleniumselenium-chromedriver

解决方案


from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

caps = DesiredCapabilities().CHROME
caps["pageLoadStrategy"] = "none"   # Do not wait for full page load
driver = webdriver.Chrome(desired_capabilities=caps, executable_path="path/to/chromedriver.exe")
driver.get('some url')
#some code to run straight away

此代码不会等到页面完全加载后才移至下一行。使用“无”页面加载策略时,您可能必须进行自定义等待以检查您需要的元素或元素是否已完成加载。

你可以使用:

import time
time.sleep()

或者,如果您只想在加载元素之前等待所需的时间:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec

WebDriverWait(driver, timeout=10).until(
    ec.visibility_of_element_located((By.ID, "your_element_id"))
)

这应该可以帮助您完成任何您想做的事情。由于您没有提供代码,因此我只能假设这会起作用,因为我无法为特定网页提供特定答案。


推荐阅读