Skip to content

解决 Selenium Python 中的 'executable_path' 参数错误

当遇到 TypeError: WebDriver.__init__() got an unexpected keyword argument 'executable_path' 错误时,说明您使用的 Selenium 版本已弃用旧参数配置方式。本文将解析原因并提供三种解决方案。

问题原因

该错误通常在 Selenium 4.10.0 及以上版本中出现,主要是因为:

  1. Selenium 4.6.0 开始引入内置的 WebDriver 管理器 (Selenium Manager)
  2. Selenium 4.10.0 正式移除了 executable_path 参数
  3. 新旧 API 使用方式不兼容

错误示例代码:

python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = webdriver.ChromeOptions()
# 在 Selenium ≥4.10.0 中会引发错误 ↓
driver = webdriver.Chrome(executable_path='./chromedriver.exe', options=options)

解决方案

✅ 方法1:使用 Service 对象(推荐)

这是官方推荐的替代方式,适用于需要自定义驱动路径的场景:

python
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options

# 创建 Service 对象并指定驱动路径
service = Service(executable_path='./chromedriver.exe')

# 配置浏览器选项
options = Options()
options.add_argument('--headless')  # 可选:无头模式

# 创建驱动实例
driver = webdriver.Chrome(service=service, options=options)

# 使用后记得关闭
driver.quit()

✅ 方法2:使用内置 Selenium Manager(最简便)

如果无需指定驱动路径,可完全省略路径参数:

python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
driver = webdriver.Chrome(options=options)  # 自动管理驱动

driver.get('https://www.google.com/')
driver.quit()

工作原理

Selenium Manager 会自动:

  1. 检测已安装的浏览器版本
  2. 下载匹配的 WebDriver
  3. 管理驱动生命周期

✅ 方法3:使用 webdriver-manager(旧版兼容)

如果仍需独立管理驱动版本,可安装第三方库:

bash
pip install webdriver-manager

代码实现:

python
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

# 自动下载和管理最新驱动
service = Service(ChromeDriverManager().install())

driver = webdriver.Chrome(service=service)

常见疑问解答

Q:我该选择哪种方法?

  • 需自定义驱动路径 → 方法1 (Service对象)
  • 想完全自动化 → 方法2 (Selenium Manager)
  • 项目需要锁定特定驱动版本 → 方法3 (webdriver-manager)

Q:Selenium Manager 兼容哪些浏览器?

目前完美支持 Chrome/Firefox/Edge,Safari 支持仍在完善中

Q:如何降级回旧版本?

不推荐降级

使用旧版本不是推荐方案(执行 pip install selenium==4.9.0),因为:

  1. 失去安全补丁更新
  2. 无法使用较新浏览器版本
  3. 未来版本兼容风险

最佳实践建议

  1. 定期更新 Selenium

    bash
    pip install -U selenium
  2. 使用上下文管理器确保资源释放:

    python
    with webdriver.Chrome() as driver:
        driver.get('https://example.com')
        # 自动退出 driver
  3. 明确指定浏览器选项避免兼容性问题:

    python
    options = webdriver.ChromeOptions()
    options.add_argument('disable-infobars')
    options.add_experimental_option('excludeSwitches', ['enable-logging'])

版本迁移检查表

  1. 检查当前 Selenium 版本:print(selenium.__version__)
  2. 替换所有 executable_path 为 Service 对象
  3. 移除过时的 DesiredCapabilities 用法
  4. 测试核心功能是否正常运作

通过遵循这些指导原则,您可顺利解决 executable_path 相关错误,并确保代码与现代 Selenium 版本保持兼容。