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

Selenium Grid报错:转发新会话失败,无法找到Capabilities求助

Selenium Grid 报错排查与解决指南

我来帮你梳理这个报错的问题,从你给出的启动命令、环境信息来看,有几个明确的点可以先排查修复:

1. ChromeDriver 路径的明显错误(Mac 环境专属问题)

你在 Node 启动命令里写的是 java -Dwebdriver.chrome.driver=/Users/alina/Selenium/chromedriver.exe,但你用的是 Mac 系统啊!ChromeDriver 在 Mac 上是没有.exe后缀的可执行文件,这个错误会直接导致 Node 无法正确加载 ChromeDriver,Hub 自然找不到对应的浏览器 Capabilities,就抛出了你看到的转发错误。

修复方法:
把启动命令里的驱动路径改成无后缀的正确版本:

java -Dwebdriver.chrome.driver=/Users/alina/Selenium/chromedriver -jar selenium-server-standalone-3.11.0.jar -role node -hub http://192.168.100.4:4444/grid/register/

2. Node 角色参数写错了

你当前用的是 -role webdriver,但在 Selenium 3.x 的 Grid 体系里,节点的正确角色参数是 -role node,这个参数错误会让 Hub 无法正确识别这个节点为可用的浏览器节点。

修复方法:
直接用上面修正后的命令,确保角色参数是 -role node。

3. 检查代码里的 Capabilities 配置是否匹配

如果上面两个问题修复后还是报错,就得看看你的测试代码里的浏览器配置是不是和 Node 支持的匹配:

  • Selenium 3.x 更推荐用 ChromeOptions 来配置,而不是旧的 DesiredCapabilities
  • 给你个示例代码片段参考:
import java.net.URL;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.RemoteWebDriver;

public class GridTest {
    public static void main(String[] args) throws Exception {
        ChromeOptions options = new ChromeOptions();
        options.setBrowserVersion("66"); // 要和你安装的Chrome版本一致
        RemoteWebDriver driver = new RemoteWebDriver(new URL("http://192.168.100.4:4444/wd/hub"), options);
        
        // 后续测试逻辑...
        driver.quit();
    }
}

4. 验证 Hub 和 Node 的连接状态

修改完启动命令后,打开浏览器访问 Hub 的控制台:http://192.168.100.4:4444/grid/console,确认你的 Node 已经成功注册,并且显示 Chrome 浏览器处于可用状态。如果看不到 Node,还要检查:

  • Hub 和 Node 是否在同一局域网,IP 地址能不能互相访问
  • 有没有防火墙拦截了 4444 端口的通信

额外小提示

别忘了给 ChromeDriver 加可执行权限,在 Mac 终端里执行这个命令就行:

chmod +x /Users/alina/Selenium/chromedriver

另外,你的 Chrome 66、ChromeDriver 2.38 和 Selenium 3.11.0 版本是完全兼容的,版本层面不用操心~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:26:46