繁体   English   中英

selenium / seleniumwire 未知错误:无法从未知错误中确定加载状态:意外的命令响应

[英]selenium / seleniumwire unknown error: cannot determine loading status from unknown error: unexpected command response

这是错误:

selenium.common.exceptions.WebDriverException: Message: unknown error: cannot determine loading status
from unknown error: unexpected command response
  (Session info: chrome=103.0.5060.53)

我正在使用正确的 webdriver 和 chrome 版本:

这是脚本,它的工作是从普通用户数据目录打开网页并提供响应。

from seleniumwire import webdriver  # Import from seleniumwire


chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("user-data-dir=C:\\selenium") 

driver = webdriver.Chrome(chrome_options=chrome_options)

driver.get('https://katalon.com/
')


for request in driver.requests:
    if request.response:
        print(
            
            request.response.status_code,
            
        )

您需要将 Google Chrome 和您的 Chrome 驱动程序升级到版本 104:

  1. 从此处安装 Google Chrome Beta:https: //www.google.com/chrome/beta/

  2. 手动将 ChromeDriver 更新为 104(尚未在 brew 中) https://chromedriver.storage.googleapis.com/index.html?path=104.0.5112.20/

  3. 设置chrome_options.binary_location

    Windows - “C:\Program Files\Google\Chrome Beta\Application\chrome.exe”

    MacOS - “/Applications/Google Chrome Beta.app/Contents/MacOS/Google Chrome Beta”

非无头 chromedriver 浏览器存在一个已知问题,您可以 在此处阅读更多相关信息。

到目前为止,还没有针对 chromedriver 版本 103 或更低版本的修复程序。

你可以做什么:

  • 按照 Dmytro Durach 的说明升级到 chromedriver 版本 104 并使用 Google 104 Beta 版本。 正如 chromedriver 版本 104 的补丁说明中所见,该问题已得到彻底解决。

  • 使用无头浏览器。 有关配置 chromedriver headless 的说明

  • 使用此处找到的隐身解决方法。 它似乎对少数人有用。

  • 等到问题解决。 据我所知,他们正在积极努力。 任何更新都会在 这里发布。

  • 使用 try...except 块无限重试(不推荐)。

chromeDriver 103 版本存在问题,Chromium 社区也存在同样的问题。

请在下面找到相同的错误 ID,

https://bugs.chromium.org/p/chromedriver/issues/detail?id=4121&q=label%3AMerge-Request-103

您可以在上述错误线程中看到所有对话。

目前,在解决此问题之前,请尝试“将 Chrome 浏览器降级至 v102”和“下载 Selenium Chrome 驱动程序 102”并尝试运行您的脚本,因为此问题发生在 103 版本中。

由于这个原因,Selenium 社区已经关闭了同样的问题,因为该问题与 Chrome 团队有关。 https://github.com/SeleniumHQ/selenium/issues/10799

我建立了一个静态等待; 它并不优雅,但它适用于我的目的:

import time

time.sleep(5)

我认为这将起作用,但作为临时解决方法。

while True:
    try:
        driver.get('https://katalon.com/')
        break
    except:
        continue

我将 Selenium 与 MS Access 一起使用,并且在更新到 Chrome 103 时遇到了同样的错误。在 (.Get URL) 之前的 (.Start "Chrome") 之后添加暂停时间就可以了。 谢谢 dtadams79

在 chrome 版本 103 上,如果您使用隐身模式打开 chrome 并禁用站点隔离试验,则不会出现此错误

options = webdriver.ChromeOptions()
options.add_argument("--incognito")
options.add_argument("--disable-site-isolation-trials")
driver = webdriver.Chrome(chrome_options=options)

我下载了 chromedriver_mac64.zip 而不是 chromedriver_mac64_m1.zip,它工作正常。

看起来这是铬的问题。 请参阅此 Selenium线程和 Chromium 问题

这是103版本降级到102的问题

对我来说,这个问题是由Chrome 和 chromedriver 之间的版本不匹配引起的。 我有 Chrome 103 和 chromedriver 102。将 chromedriver 升级到 103 解决了这个问题。

我收到与 Chrome 版本 = 103 相同的报告错误:“消息:未知错误:无法从未知错误确定加载状态:意外命令响应”,尽管我的错误是通过单击元素生成的。 我尝试了上面列出的以下建议但不起作用:隐身模式、无头浏览器(不适用于我的应用程序)、添加 time.sleep(10)。 (此时我不赞成加载 Chrome Beta 版本 104。)

这个错误(至少在我的应用程序中)的特殊之处在于,当抛出异常时,我可以看到生成它的代码(单击元素)实际上按预期执行 - 实际上是单击了元素。

所以我成功地忽略了以下代码的错误:

try:  
   next_elm.click()
except:
   pass

然后继续我的其余代码。 不是一个非常优雅的解决方法,但它适用于我的应用程序。

它就像删除 URL 末尾的正斜杠 ( / ) 一样简单

由此:

    driver.get('https://katalon.com/')

对此:

    driver.get('https://katalon.com')

代码中的解决方案:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service 
from webdriver_manager.chrome import ChromeDriverManager


# 1
option = Options()
option.binary_location='/Applications/Google Chrome 
Beta.app/Contents/MacOS/Google Chrome Beta'

# 2
driver = webdriver.Chrome(service=Service(ChromeDriverManager(version='104.0.5112.20').install()), options=option)

见: 这个线程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM