【问题标题】:How to open a page with Selenium WebDriver (Chrome), without waiting for it to load in Python?如何使用 Selenium WebDriver (Chrome) 打开页面,而无需等待它在 Python 中加载?
【发布时间】:2020-10-22 20:03:12
【问题描述】:

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)TimeoutException 处理 但是,当异常被处理时,chrome 驱动程序会停止加载页面。

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

【问题讨论】:

    标签: python selenium selenium-chromedriver


    【解决方案1】:
    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"))
    )
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-31
      • 2012-07-12
      • 1970-01-01
      • 2012-07-07
      • 1970-01-01
      • 2014-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多