使用Selenium开发WhatsApp Bot:解决免重复扫二维码登录失败问题
解决Selenium登录WhatsApp网页版免扫码及Chrome崩溃问题
问题描述
尝试用Selenium开发WhatsApp Bot,希望实现免扫码登录网页版,但指定Chrome用户数据路径时出现以下错误:
C:\Program Files\Google\Chrome\Application\chrome.exe is no longer running, so ChromeDriver is assuming that Chrome has crashed
同时旧版的executable_path方法已无法使用。
错误原因
- Chrome用户数据路径参数配置错误,未添加
--user-data-dir=前缀 - 目标数据目录被正在运行的Chrome进程占用
- ChromeDriver与Chrome浏览器版本不匹配
解决方案
1. 正确配置Chrome用户数据目录
- 找到Chrome默认用户数据路径(Windows系统一般为
C:\Users\<你的用户名>\AppData\Local\Google\Chrome\User Data),复制一份到其他路径(比如D:\Chrome_WhatsApp_Profile),避免和日常使用的Chrome冲突 - 在代码中添加参数时必须带上
--user-data-dir=前缀,不能直接传入路径字符串
2. 确保ChromeDriver与Chrome版本匹配
- 执行命令更新WebDriverManager,确保它能自动匹配对应版本的ChromeDriver:
pip install --upgrade webdriver-manager
- 手动检查Chrome版本(地址栏输入
chrome://settings/help),如果自动匹配失败,可手动下载对应版本的ChromeDriver替换
3. 修正后的完整代码
from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager import time from selenium.webdriver.chrome.service import Service # 替换为你复制后的Chrome用户数据目录路径 CHROME_DATA_PATH = r"D:\Chrome_WhatsApp_Profile" option = webdriver.ChromeOptions() # 正确添加用户数据目录参数 option.add_argument(f"--user-data-dir={CHROME_DATA_PATH}") # 可选:如果有多个用户配置文件,可指定具体目录,比如Profile 1 # option.add_argument("--profile-directory=Profile 1") # 初始化Driver时传入配置好的options参数 driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=option) driver.maximize_window() driver.get("https://web.whatsapp.com/") time.sleep(10) driver.quit()
额外注意事项
- 运行代码前关闭所有正在运行的Chrome窗口,防止数据目录被占用
- 第一次运行代码时需要手动扫码登录一次,后续运行将自动保留登录状态
- 代码运行过程中不要手动打开使用同一数据目录的Chrome实例,否则会触发崩溃错误
内容的提问来源于stack exchange,提问作者user22236133
相关产品推荐
相关产品推荐

