什么是正确的语法,检查Selenium Python网站的.dreadystate



我正在尝试使用.execute_script检查网站的.dreadystate,但我一直遇到错误。

我在Chromedriver中使用了"无"的Pagelodstrategy,因此我正在尝试测试ReadyState不再"加载"的网站。

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

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

value =方法(self._driver( TypeError:" str"对象不是可呼叫

我还尝试使用没有丢失错误的lambda,但是打印ReadyState将返回相互矛盾的结果。

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

加载

使用 pageLoadStrategy用作 none ,然后使用 web driverwait document.readyState作为 interactive 不会是好的方法。您可以将pageLoadStrategy WebDriverWait 用于document.readyState,如下所示:

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:UtilityBrowserDriversgeckodriver.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:UtilityBrowserDriverschromedriver.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作为 normal

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

您可以找到一个详细的讨论,即如何使硒不要等到整页加载,哪个具有缓慢的脚本?


uno

我们是否有任何通用功能可以检查页面是否已完全加载在硒中

您可以将条件移至JS:

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

如果网站在Angular中,则可以使用pendingRequests.length === 0请参阅此答案。

希望这会有所帮助!

相关内容

  • 没有找到相关文章

最新更新