Selenium在Mac运行报错:__init__()收到意外关键字参数service
报错原因
最核心的触发原因是Mac环境下安装的Selenium版本低于4.0:service作为Chrome驱动初始化的合法入参是Selenium 4.0版本才正式新增的特性,你Windows环境安装的是Selenium 4.x版本所以能正常识别该参数,Mac环境的Selenium为3.x旧版本,因此会抛出参数不识别的类型错误。
排查步骤
- 分别在Windows、Mac的终端执行命令
pip show selenium,查看返回结果中的Version字段值,确认Mac端的Selenium版本是否为3.x系列。
修复方案
方案1:升级Mac端Selenium版本(推荐)
直接执行升级命令将Mac端的Selenium更新到4.x版本即可兼容原有代码:
pip install --upgrade selenium
注意:如果你的Mac环境安装了多个Python版本,或者项目使用了独立虚拟环境,请切换到对应环境后用对应的pip/pip3执行升级命令
升级完成后建议核对Chrome浏览器和Chromedriver的版本匹配度,避免出现版本不兼容的其他报错。
方案2:兼容Selenium 3.x版本的代码修改
如果你不想升级Selenium版本,可以把原有初始化Chrome驱动的代码修改为旧版本兼容写法,将service对象携带的驱动路径直接通过executable_path参数传入即可:
原有写法:
from selenium import webdriver from selenium.webdriver.chrome.service import Service service = Service(executable_path="你的chromedriver路径") browser = webdriver.Chrome(service=service, options=chrome_options)
修改后的兼容写法:
from selenium import webdriver browser = webdriver.Chrome(executable_path="你的chromedriver路径", options=chrome_options)
内容的提问来源于stack exchange,提问作者Simon
相关产品推荐
相关产品推荐

