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

使用Selenium Grid运行C#自动化测试时遇会话转发错误求助

解决Selenium Grid运行C#自动化测试时的会话转发错误

看起来你遇到的是Selenium Grid中节点匹配失败的问题,这个错误本质是Hub找不到符合你请求Capabilities的节点。下面是几个针对性的排查和解决步骤:

1. 检查节点注册的配置与参数

首先,确保你启动Grid节点时,正确指定了ChromeDriver路径,并且注册的Capabilities和测试请求一致。

  • 启动节点的命令要包含ChromeDriver的绝对路径(注意路径里有空格的话,要用引号包裹):
    java -jar selenium-server-standalone.jar -role node -hub http://<你的Hub地址>:4444/grid/register -Dwebdriver.chrome.driver="F:\Selenium Projects\C#\Grid practice\automation\chromedriver.exe"
    
  • 访问Hub的控制台页面(比如http://localhost:4444/grid/console),查看已注册节点的Capabilities,确认是否包含browserName: chrome和platform: WINDOWS,如果没有,说明节点注册时的配置有问题。

2. 确认ChromeDriver与Chrome浏览器版本兼容

这是最容易踩的坑!ChromeDriver的版本必须和你本地安装的Chrome浏览器大版本完全匹配(比如Chrome是118.x,ChromeDriver也得是118.x系列)。

  • 打开Chrome的「设置-关于Chrome」查看浏览器版本,然后下载对应版本的ChromeDriver替换你当前的文件。

3. 验证环境变量配置是否生效

虽然你在系统环境变量里加了ChromeDriver的路径,但有时候系统需要重启才能加载新的环境变量。

  • 打开命令提示符,输入chromedriver --version,如果能正常输出版本号,说明环境变量生效;如果不行,要么重启系统,要么直接在启动节点的命令里用-Dwebdriver.chrome.driver指定绝对路径(推荐后者,避免环境变量的问题)。

4. 清理测试代码中多余的Capabilities参数

你的错误里提到了marionette: false,这个参数是针对Firefox的,Chrome完全不需要它!多余的参数会导致Hub无法匹配到节点。
修改你的C#测试代码,去掉无关的参数,正确配置ChromeOptions:

ChromeOptions options = new ChromeOptions();
options.PlatformName = "WINDOWS";
options.BrowserName = "chrome";
// 不需要设置marionette参数
IWebDriver driver = new RemoteWebDriver(new Uri("http://<你的Hub地址>:4444/wd/hub"), options);

5. 确保Hub和Node使用相同版本的Selenium Server

如果Hub和Node的Selenium Server版本不一致,也可能导致会话转发失败。检查两者使用的selenium-server-standalone.jar是否是同一个版本,尽量使用最新稳定版。

最后,重启Hub和Node,再运行测试试试,应该能解决这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:53:46