Mac环境下C#使用Selenium无法连接指定端口的现有Chrome浏览器问题
解决Mac上C# Selenium无法连接指定调试端口Chrome的问题
我来帮你排查这个头疼的问题——你遇到的核心问题是ChromeDriver没有正确识别你设置的DebuggerAddress,反而默认启动了新的Chrome实例,错误里的53678是ChromeDriver给新实例分配的内部端口,和你指定的9014完全没关系。下面一步步帮你解决:
一、先确保手动启动的Chrome调试实例真的在监听9014端口
很多时候问题出在Chrome启动命令上,Mac上如果有残留的Chrome进程,新启动的实例会依附到已有进程,导致调试端口不生效。按以下步骤操作:
- 彻底关闭所有Chrome进程:
killall "Google Chrome"
- 用独立的用户数据目录启动带调试端口的Chrome(避免和默认浏览器配置冲突):
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9014 --user-data-dir=/tmp/chrome-debug-session
- 验证端口是否真的被监听:
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
相关产品推荐
相关产品推荐

