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查看进程资源占用
- Linux代理:执行
- 确认代理磁盘空间充足,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
相关产品推荐
相关产品推荐

