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

Chromedriver在Program Files(x86)生成scoped_dir未清理,求解决方案

Chromedriver测试后scoped_dir目录未清理问题排查与解决

问题现象

在局域网Azure DevOps代理上运行基于.NET Core的Chromedriver测试时,Chrome会在C:\Program Files (x86)\目录下生成scoped_dir开头的临时目录,但测试完成后这些目录不会自动清理。同时查看Driver capabilities发现,userDataDir被指向不存在的路径C:\Windows\proxy\scoped_dir3604_1404454725,而非预期的系统临时文件夹。

用户提供的Driver capabilities信息:

{
  "acceptInsecureCerts": true,
  "browserName": "chrome",
  "browserVersion": "113.0.5672.64",
  "chrome": {
    "chromedriverVersion": "113.0.5672.24 (65f30d4e8051264233c679c7cd3743679f15339d-refs/branch-heads/5672@{#243})",
    "userDataDir": "C:\\Windows\\proxy\\scoped_dir3604_1404454725"
  },
  "goog:chromeOptions": {
    "debuggerAddress": "localhost:3048"
  },
  ....
}

原因分析

  1. 代理服务运行权限限制:如果Azure DevOps代理使用Local System账户运行,Chrome尝试在系统目录创建用户数据目录时会因权限不足失败,转而在Chrome安装目录附近生成scoped_dir目录。同时,权限问题会导致Chromedriver无法识别该目录为临时目录,测试结束后不触发清理逻辑。
  2. 环境变量异常:代理服务的TEMP/TMP环境变量被错误配置,导致Chromedriver无法获取正确的系统临时目录,错误指向C:\Windows\proxy\(该路径通常是代理服务的默认临时路径,但实际不存在或无访问权限)。

解决方法

1. 调整Azure DevOps代理运行账户

将代理从Local System账户切换为具有本地管理员权限的域账户或本地账户。这样Chrome可以正常访问系统临时目录(%TEMP%),scoped_dir会生成在临时文件夹内,测试结束后Chromedriver会自动清理。

2. 手动配置Chrome临时目录

在初始化Chromedriver时,通过goog:chromeOptions强制指定用户数据目录为有权限的临时路径,同时启用自动清理的临时模式:

var chromeOptions = new ChromeOptions();
// 指定用户数据目录到系统临时文件夹
chromeOptions.AddArgument($"--user-data-dir={Path.Combine(Path.GetTempPath(), "ChromeTestTemp")}");
// 启用临时配置文件,退出Chrome时自动清理
chromeOptions.AddArgument("--temp-profile");
// 可选:使用无痕模式,同样会自动清理临时数据
// chromeOptions.AddArgument("--incognito");

var driver = new ChromeDriver(chromeOptions);

3. 修正代理服务环境变量

检查Azure DevOps代理服务的环境变量,确保TEMP和TMP指向正确的临时目录(例如C:\Users\<账户名>\AppData\Local\Temp)。修改后重启代理服务,让环境变量生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:59:57