[英]unknown error: session deleted because of page crash from unknown error: cannot determine loading status from tab crashed with ChromeDriver Selenium
[英]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:
从此处安装 Google Chrome Beta:https: //www.google.com/chrome/beta/
手动将 ChromeDriver 更新为 104(尚未在 brew 中) https://chromedriver.storage.googleapis.com/index.html?path=104.0.5112.20/
设置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,它工作正常。
这是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.