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

Mac环境下C#使用Selenium无法连接指定端口的现有Chrome浏览器问题

解决Mac上C# Selenium无法连接指定调试端口Chrome的问题

我来帮你排查这个头疼的问题——你遇到的核心问题是ChromeDriver没有正确识别你设置的DebuggerAddress,反而默认启动了新的Chrome实例,错误里的53678是ChromeDriver给新实例分配的内部端口,和你指定的9014完全没关系。下面一步步帮你解决:

一、先确保手动启动的Chrome调试实例真的在监听9014端口

很多时候问题出在Chrome启动命令上,Mac上如果有残留的Chrome进程,新启动的实例会依附到已有进程,导致调试端口不生效。按以下步骤操作:

  1. 彻底关闭所有Chrome进程:
killall "Google Chrome"
  1. 用独立的用户数据目录启动带调试端口的Chrome(避免和默认浏览器配置冲突):
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9014 --user-data-dir=/tmp/chrome-debug-session
  1. 验证端口是否真的被监听:
lsof -i :9014

如果输出里有Google Chrome的进程,说明调试实例启动成功;如果没有,重复前两步确保没有残留进程。

二、检查ChromeDriver和Chrome版本是否完全匹配

这是Selenium调试最常见的坑:ChromeDriver版本必须和你的Chrome主版本号完全一致(比如Chrome是118.0.5993.88,ChromeDriver也要是118.x版本)。

  • 打开Chrome,在chrome://version/里查看你的Chrome版本号
  • 下载对应版本的ChromeDriver,放到你的项目目录,并且给它加可执行权限:
chmod +x /Users/jb/Projects/fjsdlfsdf/fjsdlfsdf/bin/Debug/chromedriver

三、修正C#代码的Driver初始化逻辑

你的代码逻辑没问题,但可能有细节没注意到:

// 确保路径指向chromedriver文件(Mac上没有.exe后缀)
var chromeDriverPath = "/Users/jb/Projects/fjsdlfsdf/fjsdlfsdf/bin/Debug/chromedriver";
var options = new ChromeOptions();
// 确认这里没有拼写错误,端口和启动命令一致
options.DebuggerAddress = "localhost:9014";

// 初始化Driver,注意参数顺序(路径在前,配置在后)
Driver = new ChromeDriver(chromeDriverPath, options);
Driver.Navigate().GoToUrl("https://google.com");

如果你的ChromeDriver已经加到系统PATH里,也可以简化成:

var options = new ChromeOptions();
options.DebuggerAddress = "localhost:9014";
Driver = new ChromeDriver(options);

为什么会出现那个奇怪的53678端口错误?

当ChromeDriver没有正确读取到DebuggerAddress配置时,它会默认启动一个新的Chrome实例,并随机分配一个内部端口(就是你看到的53678),然后尝试连接这个新实例。如果因为版本不兼容、权限不足等原因连接失败,就会抛出超时错误。

按上面的步骤走,应该就能成功连接到你指定的9014端口的Chrome实例了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 05:27:48