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

Selenium Headless模式搭配user-data-dir无法正常工作问题咨询

Chrome Headless模式无法读取本地已保存WhatsApp会话的排查方案

核心问题根因

Chrome 94版本默认的--headless参数启动的是旧版精简Headless内核,和桌面版完整Chrome的存储读取逻辑、环境指纹存在差异,WhatsApp Web会对运行环境做校验,旧Headless模式下就算配置了正确的用户数据路径,也无法正常加载绑定了本地浏览器环境的登录态,同时现有配置存在多处参数冲突,会进一步放大异常。

排查与修复步骤

1. 替换Headless运行模式

将原有配置中的chromeOptions.addArguments("--headless");替换为:

chromeOptions.addArguments("--headless=chrome");

该参数启动的是Chrome 94版本支持的全新Headless模式,运行内核和桌面版Chrome完全一致,仅不渲染可视窗口,可完整读取本地用户配置、存储的Cookie与登录态,不会触发站点的Headless环境检测。

注意:后续Chrome更高版本中该参数调整为--headless=new,94版本仅支持--headless=chrome写法。

2. 清理冲突配置项

现有配置中存在多处会导致会话校验失败的参数,直接移除即可:

  • 移除自定义--user-agent配置:当前配置的UA为Opera浏览器标识,和本地Chrome保存会话时绑定的UA不一致,会触发WhatsApp的会话有效性校验,直接判定登录态失效。新Headless模式下默认UA和正常启动的Chrome完全一致,无需手动修改。
  • 移除--disable-gpu参数:该参数是早期Windows平台Chrome Headless的临时bug修复参数,Chrome 94版本已修复对应问题,保留该参数反而可能触发渲染异常。

3. 解决用户数据目录锁冲突

Chrome的用户数据目录为进程独占模式,启动自动化脚本前必须关闭所有正在运行的Chrome进程,否则Selenium启动的Chrome实例无法获取用户目录的读写锁,会自动 fallback 到临时配置目录,无法读取已保存的会话。
如果需要同时使用日常Chrome和自动化脚本,不要直接复用日常使用的Profile目录,可单独复制一份Profile目录给自动化脚本专用,避免锁冲突。

4. 校验配置加载有效性

参数修改完成后按以下步骤验证:

  • 先移除Headless参数启动,确认可以正常加载已登录的WhatsApp Web页面,排除Profile路径配置错误问题。
  • 关闭所有Chrome进程,加上--headless=chrome参数启动,访问chrome://version页面,确认页面显示的Profile路径为你配置的Profile 1路径,命令行参数中包含正确的user-data-dir配置,确认配置已生效。
  • 如果仍存在会话异常,新建一个独立的用户数据目录,手动启动Chrome指定该目录,扫码登录WhatsApp Web后关闭浏览器,再让Selenium使用该全新目录启动,排除原Profile中缓存、扩展、权限配置的干扰。

5. 确认版本匹配

Chrome 94版本必须搭配大版本号为94的ChromeDriver使用,ChromeDriver大版本和Chrome大版本不一致会导致--headless=chrome参数无法识别,自动回退到旧版Headless模式,导致问题复现。

修正后的参考配置代码

System.setProperty("webdriver.chrome.driver", "C:\\Users\\4P\\Documents\\DRIVER SELENIUM\\chromedriver.exe");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--no-sandbox");
// 替换旧headless参数为新Headless模式
chromeOptions.addArguments("--headless=chrome");
chromeOptions.addArguments("--window-size=1920,1080");
chromeOptions.addArguments("--user-data-dir=C:\\Users\\4P\\AppData\\Local\\Google\\Chrome\\User Data");
chromeOptions.addArguments("--remote-debugging-port=9222");
chromeOptions.addArguments("--profile-directory=Profile 1");
chromeOptions.setBinary("C:\\Users\\4P\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe");
this.driver = new ChromeDriver(chromeOptions);
this.driver.manage().window();
this.js = (JavascriptExecutor) driver;

注:如果使用独立的自动化专用Profile,把--user-data-dir和--profile-directory路径替换为对应目录即可。

内容的提问来源于stack exchange,提问作者Daniel Moreira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:27:34