Selenium Python脚本报错:__init__()意外收到'service'关键字参数
解决Selenium 3.x中
webdriver.Chrome(service=...)参数错误问题 问题原因
服务器上安装的Selenium版本是3.141.0,而service参数是Selenium 4.x版本才新增的webdriver.Chrome初始化参数,3.x版本完全不支持该参数,因此触发TypeError。
两种解决方案
方案1:升级Selenium到4.x版本
执行命令让服务器环境和本地保持一致:
pip install --upgrade selenium
升级完成后,原代码无需修改即可正常运行。
方案2:修改代码适配Selenium 3.x版本
如果不想升级依赖,可调整代码兼容3.x的写法:
- 删除导入
Service的语句:# 删掉这行 from selenium.webdriver.chrome.service import Service - 修改driver初始化代码,直接传入chromedriver路径:
# 替换原来的service_object定义和driver初始化两行代码 driver = webdriver.Chrome('./chromedriver')
额外注意事项
服务器通常为无桌面环境,建议添加Chrome无头模式参数避免运行异常,示例代码如下:
from selenium.webdriver.chrome.options import Options # 配置无头模式 chrome_options = Options() chrome_options.add_argument('--headless') chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-dev-shm-usage') # 对应方案1(Selenium 4.x)的写法 service_object = Service('./chromedriver') driver = webdriver.Chrome(service=service_object, options=chrome_options) # 对应方案2(Selenium 3.x)的写法 driver = webdriver.Chrome('./chromedriver', options=chrome_options)
内容的提问来源于stack exchange,提问作者Zerers
相关产品推荐
相关产品推荐

