You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium WhatsApp批量消息脚本Windows环境WebDriver报错求助

问题修复方案

错误原因分析

  • 第一个TypeError: __init__() got an unexpected keyword argument 'options'错误
    核心是Selenium版本不兼容,你Ubuntu环境用的是Selenium3.x版本,Windows环境安装的是Selenium4.6+版本,两个版本的webdriver.Chrome构造函数参数规则完全不同:
    • Selenium3.x 支持直接传executable_path、options等关键字参数
    • Selenium4.6+ 之后取消了直接传这类参数的写法,驱动路径需要封装到Service对象中传递,同时你的代码本身也存在缩进错误、options定义后没有传入driver初始化方法的问题
  • 第二个AttributeError: 'NoneType' object has no attribute 'quit'错误
    是因为第一步driver初始化失败,self.driver还是初始化时的None值,finally块直接调用self.driver.quit()就会触发空对象属性错误。

修复步骤

  1. 首先修正load_driver方法的缩进错误、参数传递逻辑,适配Selenium4的写法
  2. 修改close_driver方法,增加非空判断避免空指针
  3. 不需要手动指定ChromeDriver路径,Selenium4.6+自带的驱动管理功能会自动匹配对应版本的驱动,也可以保留webdriver_manager的逻辑

修复后的代码片段

1. 新增Service类导入

from selenium.webdriver.chrome.service import Service

2. 修正load_driver方法

def load_driver(self):
    # 定义options,修正原有缩进错误
    options = Options()
    options.binary_location = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
    # 封装驱动路径到Service对象,适配Selenium4规范
    service = Service(ChromeDriverManager().install())
    # 初始化driver时传入service和options参数
    self.driver = webdriver.Chrome(service=service, options=options)
    self.driver.get("https://web.whatsapp.com")
    self.driver_wait = WebDriverWait(self.driver, 20)

3. 修正close_driver方法

def close_driver(self):
    # 先判断driver是否初始化成功,再调用quit方法
    if self.driver is not None:
        self.driver.quit()

额外说明

如果不想适配Selenium4,也可以直接降级到和Ubuntu环境一致的Selenium3版本解决参数错误,运行命令pip install selenium==3.141.0即可。

内容的提问来源于stack exchange,提问作者Fazzy Malhotra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:39:03