Selenium/Seleniumwire报cannot determine loading status错误求解
问题现象
运行Selenium脚本时触发加载状态识别异常,已确认使用的webdriver与本地Chrome版本(103.0.5060.53)完全匹配。
报错详情
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot determine loading status from unknown error: unexpected command response (Session info: chrome=103.0.5060.53)
复现代码
脚本功能为读取指定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, )
解决方案
按以下优先级排查修复即可:
- 修正代码语法错误:原代码中
driver.get()传入的URL字符串被意外换行,会直接导致解析异常,将URL调整为单行写法即可:driver.get('https://katalon.com/') - 修复Chrome 103版本已知兼容问题:Chrome 103与对应驱动存在偶发的CDP通信解析bug,在启动参数中添加如下配置,绕过自动化检测特征、调整页面加载策略,避免全量资源加载阶段触发响应识别错误:
chrome_options.add_argument("--disable-blink-features=AutomationControlled") chrome_options.page_load_strategy = 'eager' - 排查用户数据目录占用问题:指定的
C:\selenium用户数据目录如果被其他正在运行的Chrome进程占用,会导致驱动与浏览器进程通信中断触发报错。运行脚本前先关闭所有Chrome后台进程,确认无进程占用该目录后再执行;也可以先临时移除user-data-dir参数,验证基础功能正常后再排查自定义用户目录的配置问题。 - 升级依赖版本:低版本selenium、seleniumwire对Chrome 103的协议解析存在兼容问题,执行如下命令升级依赖到兼容版本后重试:
pip install --upgrade selenium seleniumwire - 增加重试兜底:如果调整配置后仍偶发该异常,给
driver.get()方法添加2-3次的异常捕获重试逻辑,即可绕过该版本Chrome的偶发通信bug。
内容的提问来源于stack exchange,提问作者Col Burn
相关产品推荐
相关产品推荐

