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

在Redhat Linux上运行Selenium测试用例时启动Chrome报错求助

解决Linux下Mono运行C# Selenium ChromeDriver启动失败问题

结合你给出的报错信息、版本匹配情况(ChromeDriver 2.36 确实兼容 Chrome 65.0.3325.162),以及Linux+Mono的运行环境,给你几个针对性的解决方案:

1. 确保ChromeDriver具备可执行权限

Linux下下载的ChromeDriver默认可能没有执行权限,先进入ChromeDriver所在目录,执行:

chmod +x chromedriver

2. 在代码中明确指定ChromeDriver路径

Mono环境下经常会出现无法自动识别ChromeDriver默认路径的情况,建议在代码里显式指定驱动位置:

// 替换为你的ChromeDriver实际所在目录,比如/usr/local/bin
var driverService = ChromeDriverService.CreateDefaultService("/path/to/your/chromedriver");
// 可选:隐藏命令行窗口(不需要调试时开启)
driverService.HideCommandPromptWindow = true;

IWebDriver driver = new ChromeDriver(driverService);
driver.Close();

3. 处理无GUI/服务器环境的运行限制

如果你的Linux环境没有图形界面(比如云服务器),必须添加Chrome的无头模式参数,同时解决Linux特有的沙箱权限问题:

var options = new ChromeOptions();
// 启用无头模式,无需图形界面即可运行
options.AddArgument("--headless");
// 禁用沙箱(非root用户在Linux下运行Chrome的必要参数)
options.AddArgument("--no-sandbox");
// 解决/dev/shm临时空间不足的问题
options.AddArgument("--disable-dev-shm-usage");
// 可选:指定窗口大小,避免部分页面布局异常
options.AddArgument("--window-size=1920,1080");

var driverService = ChromeDriverService.CreateDefaultService("/path/to/your/chromedriver");
IWebDriver driver = new ChromeDriver(driverService, options);
driver.Close();

4. 检查端口占用情况

报错中提到的localhost:37423端口可能被其他进程占用,你可以用以下命令排查并清理:

# 查找占用37423端口的进程
lsof -i :37423
# 杀掉对应进程(替换<PID>为实际查到的进程ID)
kill -9 <PID>

5. 确认NuGet包安装正确性

确保你的项目中已经正确安装了Selenium.WebDriver和Selenium.ChromeDriver包,版本要和你使用的ChromeDriver(2.36)保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:32:12