gpt4 book ai didi

python - 在 Selenium Python 中检查网站的 .readyState 的正确语法是什么?

转载 作者:行者123 更新时间:2023-12-01 00:48:48 26 4
gpt4 key购买 nike

我尝试使用 .execute_script 检查网站的 .readyState,但总是收到错误。

我在 chromedriver 中使用“none”的 pageLoadStrategy,因此我尝试测试网站的就绪状态是否不再“正在加载”。

注意:这个问题是特定于 Python 的。

WebDriverWait(driver, timeout=20).until(
driver.execute_script('return document.readyState') == 'interactive'
)

value = method(self._driver) TypeError: 'str' object is not callable

我也尝试过使用 lambda,它不会引发错误,但是打印就绪状态将返回冲突的结果。

WebDriverWait(driver, timeout=20).until(
lambda driver: driver.execute_script('return document.readyState') == 'interactive'
)
print(driver.execute_script('return document.readyState'))

loading

最佳答案

使用pageLoadStrategy作为none,然后使用WebDriverWait作为document.readyState因为交互式并不是一个好的方法。您可以对 document.readyState 使用 pageLoadStrategyWebDriverWait,如下所示:

要将 pageLoadStrategy 配置为 None,您可以使用以下任一解决方案:

  • Firefox:

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

    caps = DesiredCapabilities().FIREFOX
    caps["pageLoadStrategy"] = "none"
    #caps["pageLoadStrategy"] = "eager" # interactive
    #caps["pageLoadStrategy"] = "normal" # complete
    driver = webdriver.Firefox(desired_capabilities=caps, executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
    driver.get("http://google.com")
  • Chrome:

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

    caps = DesiredCapabilities().CHROME
    caps["pageLoadStrategy"] = "none"
    #caps["pageLoadStrategy"] = "eager" # interactive
    #caps["pageLoadStrategy"] = "normal" # complete
    driver = webdriver.Chrome(desired_capabilities=caps, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    driver.get("http://google.com")

使用WebDriverWait来等待document.readyState作为eager:

WebDriverWait(driver, 20).until(lambda driver: driver.execute_script("return document.readyState").equals("interactive"))

使用WebDriverWait作为正常等待document.readyState:

WebDriverWait(driver, 20).until(lambda driver: driver.execute_script("return document.readyState").equals("complete"))

You can find a detailed discussion in How to make Selenium not wait till full page load, which has a slow script?

<小时/>

片尾

Do we have any generic function to check if page has completely loaded in Selenium

关于python - 在 Selenium Python 中检查网站的 .readyState 的正确语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56728656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com