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

使用无头Chrome(Selenium C#)下载文件时遭遇异常

解决无头Chrome模式下Selenium无法下载文件的问题

针对ChromeDriver 110.0.5版本中,无头模式无法下载文件但非无头模式正常的问题,可通过补充配置参数和调整用户偏好解决,修改后的代码如下:

ChromeOptions options = new ChromeOptions();

var chromeDriverService = ChromeDriverService.CreateDefaultService();
chromeDriverService.HideCommandPromptWindow = true;
chromeDriverService.SuppressInitialDiagnosticInformation = true;

// 替换旧无头参数为兼容模式(适配Chrome 110+)
options.AddArgument("--headless=chrome");
// 添加必要参数规避环境限制
options.AddArgument("--no-sandbox");
options.AddArgument("--disable-dev-shm-usage");

string downloadPath = System.Environment.GetEnvironmentVariable("USERPROFILE") + @"\Downloads";
options.AddUserProfilePreference("download.default_directory", downloadPath);
// 禁用下载提示框(无头模式无法交互确认)
options.AddUserProfilePreference("download.prompt_for_download", false);
options.AddUserProfilePreference("profile.default_content_setting_values.automatic_downloads", 1);
options.AddArgument("--window-size=1920,1080");

// 若下载PDF等浏览器默认预览的文件,需添加此配置强制下载
options.AddUserProfilePreference("plugins.always_open_pdf_externally", true);

关键配置说明

  • 切换无头模式类型:旧的--headless参数对应精简版Chrome环境,与正常浏览器行为差异大,改用--headless=chrome可模拟更接近正常Chrome的运行环境,解决大部分兼容性问题(Chrome 112+可直接用--headless=new)。
  • 禁用下载提示:无头模式下无法处理下载确认弹窗,必须通过download.prompt_for_download=false自动确认下载操作。
  • 环境兼容参数:--no-sandbox和--disable-dev-shm-usage可避免因系统沙箱或共享内存限制导致的功能异常,Windows和Linux环境均适用。
  • 特定文件处理:针对PDF等浏览器默认在线预览的文件,需开启plugins.always_open_pdf_externally强制触发下载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:01:28