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

使用C#结合Selenium自动化Electron应用时出现超时错误

Electron应用Selenium自动化超时问题排查与解决

错误核心原因

你的问题本质是ChromeDriver无法与Electron应用建立有效连接,导致会话请求超时。测试正常网站说明ChromeDriver本身功能正常,问题集中在Electron的配置或版本匹配上,常见原因包括:

  • ChromeDriver与Electron内置Chromium版本不匹配:Electron基于特定版本的Chromium构建,ChromeDriver版本必须与该Chromium版本完全一致,否则无法兼容通信。
  • Electron未开启调试端口:ChromeDriver依赖Chrome DevTools协议与目标应用通信,Electron默认不会开启该协议端口,导致连接失败。
  • 启动参数缺失或权限不足:Electron需要特定参数才能被自动化工具识别,或运行进程无权限启动Electron应用。

分步解决方案

1. 严格匹配ChromeDriver与Electron版本

  • 查看Electron应用内置的Chromium版本:
    在Electron应用中打开开发者控制台(按F12),执行console.log(process.versions.chrome)获取版本号。
  • 下载对应版本的ChromeDriver:
    找到与上述Chromium版本完全一致的ChromeDriver(比如Chromium 114对应ChromeDriver 114.x.x.x),替换当前使用的驱动文件。

2. 强制开启Electron调试端口

在ChromeOptions中添加远程调试端口参数,让Electron启动时开启DevTools协议:

ChromeOptions options = new ChromeOptions();
options.BinaryLocation = @"C:\Program Files\Analyser-A15\binaries\electron\AnalyserApp.exe";
// 添加调试端口参数
options.AddArgument("--remote-debugging-port=9222");
// 原有参数保留
options.AddArgument("no-sandbox");
options.AddArgument("enable-automation");

3. 验证路径与权限

  • 确认BinaryLocation的绝对路径完全正确,避免因相对路径或拼写错误导致无法启动Electron。
  • 尝试以管理员权限运行测试程序,排除权限不足导致的应用启动失败。

4. 添加Electron专属启动参数

补充以下参数提升兼容性:

options.AddArgument("--no-first-run");
options.AddArgument("--disable-popup-blocking");
// 适配Electron 12+版本
options.AddArgument("--enable-features=NetworkService,NetworkServiceInProcess");

5. 延长会话超时时间

临时延长超时时间,确认是否因应用启动缓慢导致超时:

string projectDirectory = Directory.GetCurrentDirectory().Replace(@"bin\Debug\net6.0", "");
// 设置2分钟超时
var commandTimeout = TimeSpan.FromMinutes(2);
_driver = new ChromeDriver(projectDirectory + @"Drivers\Electron", options, commandTimeout);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:25:40