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

如何实现WhatsApp Web免扫码登录?Selenium代码失效求助

解决WhatsApp Web无需扫码登录的Selenium问题

嘿,我来帮你搞定这个登录缓存的问题!你的思路是对的——利用Chrome的用户数据目录保存登录状态,但代码里有几个关键错误导致没生效,我一步步给你拆解:

1. ChromeOptions参数使用错误

你直接把数据目录路径传给add_argument是不对的,必须明确指定--user-data-dir参数名,Chrome才会识别这是要加载的用户数据目录。你的原代码里缺了这个参数前缀,所以Chrome根本没读取你指定的缓存数据。

2. Selenium 4.x的chromedriver调用方式(可选但推荐)

新版Selenium已经弃用了直接在webdriver.Chrome()里传executable_path的写法,改用Service类来管理驱动,这样能避免很多路径相关的坑。

3. 确认数据目录的有效性

你之前手动登录WhatsApp Web的Chrome实例,必须是使用同一个数据目录打开的,不然缓存不会存在你指定的文件夹里。可以先手动启动Chrome并指定这个目录,登录后再关闭,确保缓存已经写入。

修正后的代码

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import time

# 配置Chrome选项,指定用户数据目录
options = webdriver.ChromeOptions()
# 注意:必须加上--user-data-dir=前缀,路径用正斜杠或双反斜杠
options.add_argument(r'--user-data-dir=D:/pythonProject/Aulas/scripts/Projetos/whatsautomatico/driver/data')

# 用Service类指定chromedriver路径(Selenium 4.x推荐写法)
service = Service(executable_path='D:/pythonProject/Aulas/scripts/Projetos/whatsautomatico/driver/chromedriver')
driver = webdriver.Chrome(service=service, options=options)

driver.get('https://web.whatsapp.com')
time.sleep(15)

额外注意事项

  • 如果你的Chrome版本和chromedriver版本不匹配,也可能导致加载用户数据失败,确保两者版本一致(可以查看Chrome版本后下载对应chromedriver)。
  • 不要同时打开多个使用同一个数据目录的Chrome实例,否则会锁定缓存文件,导致Selenium无法读取。

内容的提问来源于stack exchange,提问作者Joao Paulo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 22:37:58