ChromeDriver启动报错:'firstMatch'需至少含一个条目求助
关于ChromeDriver报错
invalid argument: 'firstMatch' must contain at least one entry的解决方案 这个报错我之前帮同事排查过,本质是ChromeDriver、Selenium版本和Python环境的兼容性不匹配导致的,下面给你拆解清楚:
报错含义
invalid argument: 'firstMatch' must contain at least one entry 这个错误是ChromeDriver和Selenium之间的WebDriver通信协议不兼容引发的。你用的ChromeDriver 79.x已经默认启用了W3C标准的WebDriver协议,但如果你的Selenium版本比较旧,对这个新协议的参数处理逻辑不完善,在协商会话配置时就会无法正确识别firstMatch这个字段,进而抛出这个错误。
你之前用旧版ChromeDriver没问题,是因为旧版Driver默认采用的是传统的JSON Wire协议,和你当时的Selenium版本完全适配,自然不会有协议冲突。
解决办法
1. 升级Selenium到兼容版本
ChromeDriver 79.x对应的Selenium最低兼容版本是3.141.0,直接执行升级命令即可:
pip3 install --upgrade selenium
(如果你的环境默认用pip指向Python3,也可以直接用pip)
2. 临时禁用W3C模式(不推荐长期使用)
如果暂时没法升级Selenium,可以在初始化Chrome时添加参数强制关闭W3C模式,退回到旧协议:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 关闭W3C模式 chrome_options.add_experimental_option('w3c', False) driver = webdriver.Chrome(r'path/to/file', options=chrome_options)
3. 确认Chrome浏览器和Driver版本完全匹配
还要检查你的Chrome浏览器版本是不是和ChromeDriver 79.0.3945.16完全一致,版本号必须前三位完全相同(比如Chrome浏览器也是79.0.3945.x),版本不匹配也可能触发各种协议相关的奇怪错误。
内容的提问来源于stack exchange,提问作者mr. bot
相关产品推荐
相关产品推荐

