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

C#中ChromeDriver构造函数因特定配置文件Chrome实例存在而挂起

2018年ChromeDriver复用用户目录超时属于正常现象吗?

答案是肯定的——在2018年,这种情况完全是正常的预期行为。

为什么会这样?原理其实很直白:Chrome的用户数据目录(也就是你代码里指定的user-data-dir)是单实例独占的资源。当你用这个配置启动第一个ChromeDriver时,Chrome会锁定这个目录,防止其他实例篡改数据。第二个实例尝试访问同一个目录时,会因为拿不到锁而一直等待,直到触发60秒的超时限制,这在当时的ChromeDriver版本里是标准表现。

而且2018年的ChromeDriver(对应当时的Chrome浏览器版本)还没有优化这类场景的错误提示,不像现在可能会直接抛出“目录已被占用”的明确错误,当时就是默默等待超时,所以你遇到的情况完全符合当时的产品逻辑。

顺便提一句当时常见的解决思路,供参考:

  • 要同时启动多个Chrome实例,必须给每个实例分配独立的用户数据目录,比如给每个实例创建一个子文件夹(比如profile1、profile2),不能共用同一个目录;
  • 或者在启动第二个实例前,确保第一个ChromeDriver已经完全退出,释放掉目录锁。

你提供的复现代码如下:

var co = new ChromeOptions(); 
var dir = Path.Combine(Environment.CurrentDirectory, "profile"); 
co.AddArgument($"user-data-dir={dir}"); 
var driver = new ChromeDriver(co); 
var driver2 = new ChromeDriver(co); // <-- 此处会在60秒后超时

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:50:44