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

Azure DevOps流水线中Selenium ChromeDriver请求超时问题求助

Azure DevOps流水线Selenium测试会话超时问题排查方案

问题复现

在Azure DevOps流水线运行Selenium Chrome测试时,持续出现会话创建超时错误:

向远程WebDriver服务器发送URL为http://localhost:51218/session的HTTP请求在60秒后超时。

已升级ChromeDriver(115.x)、Chromium(115.x)、Selenium.WebDriver(4.11.0),问题仍未解决。

排查步骤

1. 检查代理机器资源占用

  • 流水线启动测试前,添加系统资源检查步骤:
    • Linux代理:执行top -b -n 1查看CPU、内存使用率
    • Windows代理:执行tasklist /v查看进程资源占用
  • 确认代理磁盘空间充足,Chrome启动需要临时目录写入文件,空间不足会导致启动失败。

2. 验证ChromeDriver与Chromium的兼容性配置

  • 若Chromium为自定义安装路径,需在代码中明确指定二进制文件位置:
    var options = new ChromeOptions();
    options.BinaryLocation = "/usr/bin/chromium-browser"; // 替换为实际路径
    
  • 在代理机器手动执行chromedriver --version,验证ChromeDriver可正常启动,无依赖报错。

3. 调整Selenium超时参数

  • 延长WebDriver命令超时时间,覆盖默认60秒限制:
    var driver = new ChromeDriver(driverFolder, options, TimeSpan.FromMinutes(2));
    

4. 修复无头模式与代理环境适配

  • Azure DevOps代理无桌面环境,必须启用Chrome无头模式,同时添加必要启动参数:
    var options = new ChromeOptions();
    options.AddArgument("--headless=new"); // Selenium 4+推荐的无头模式
    options.AddArgument("--disable-gpu");
    options.AddArgument("--no-sandbox"); // Linux代理必备权限参数
    options.AddArgument("--disable-dev-shm-usage"); // 解决Linux临时内存不足问题
    

5. 开启ChromeDriver日志排查启动细节

  • 启用ChromeDriver详细日志,捕获启动失败原因:
    var service = ChromeDriverService.CreateDefaultService(driverFolder);
    service.LogPath = Path.Combine(Directory.GetCurrentDirectory(), "chromedriver.log");
    service.EnableVerboseLogging = true;
    var driver = new ChromeDriver(service, options, TimeSpan.FromMinutes(2));
    
  • 流水线运行后,将chromedriver.log作为工件上传,查看日志中的具体错误信息(如依赖缺失、权限拒绝等)。

6. 检查代理网络与防火墙配置

  • 确认代理机器防火墙未阻止localhost端口的通信(ChromeDriver默认随机分配端口)
  • 若使用Azure托管代理,测试切换为自托管代理,排查是否存在平台网络策略限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 09:07:40