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

使用Nightwatch-Cucumber对接Selenium Grid时遇连接拒绝错误求助

解决Nightwatch-Cucumber对接Selenium Grid时的"Connection refused"错误

我来帮你一步步排查这个连接问题,咱们从最基础的环节开始:

1. 确认Selenium Hub确实已经启动

首先,你得确保Selenium Hub是正常运行的。用你依赖里的selenium-server-standalone-3.9.1.jar,执行启动命令:

java -jar ./node_modules/selenium-server-standalone-jar/jar/selenium-server-standalone-3.9.1.jar -role hub

启动成功后,打开浏览器访问 http://localhost:4444/grid/console —— 如果能看到Grid控制台页面,说明Hub运行正常;如果打不开,那Hub肯定没启动起来,检查命令里的jar路径是否正确,或者有没有Java环境问题。

2. 修正Nightwatch配置,指向Selenium Hub

你的nightwatch.conf.js目前只配置了globals_path,还需要补充Grid相关的核心设置。在配置的test_settings部分,确保以下几项正确:

const config = {
  globals_path: "globals.js",
  // 其他基础配置...
  test_settings: {
    default: {
      // 指向Selenium Hub的地址和端口
      selenium_host: 'localhost', // 如果Hub在远程机器,替换成对应的IP/域名
      selenium_port: 4444, // Hub默认端口,如果你改了Hub端口要同步修改
      // 关键:禁止Nightwatch自动启动本地Selenium服务
      selenium: {
        start_process: false
      },
      desiredCapabilities: {
        browserName: 'chrome', // 或者你要测试的浏览器
        // 可选:如果需要指定节点的平台、版本等,比如 platform: 'WINDOWS'
      }
    }
  }
};

module.exports = config;

这里最容易踩坑的是start_process: false —— 默认Nightwatch会自己启动本地Selenium服务,而用Grid的话必须关掉这个选项,让它去连接已经运行的Hub。

3. 确保Selenium节点已成功注册到Hub

Hub启动后,还要启动至少一个节点并注册到Hub。比如启动Chrome节点的命令:

# Windows系统
java -Dwebdriver.chrome.driver=./node_modules/chromedriver/lib/chromedriver/chromedriver.exe -jar ./node_modules/selenium-server-standalone-jar/jar/selenium-server-standalone-3.9.1.jar -role node -hub http://localhost:4444/grid/register

# Mac/Linux系统
java -Dwebdriver.chrome.driver=./node_modules/chromedriver/bin/chromedriver -jar ./node_modules/selenium-server-standalone-jar/jar/selenium-server-standalone-3.9.1.jar -role node -hub http://localhost:4444/grid/register

启动Firefox节点的话,把chromedriver路径换成geckodriver的路径:

# Windows
-Dwebdriver.gecko.driver=./node_modules/geckodriver/geckodriver.exe

# Mac/Linux
-Dwebdriver.gecko.driver=./node_modules/geckodriver/geckodriver

节点启动成功后,回到Hub的控制台页面,应该能看到注册成功的节点信息。如果节点没显示,检查命令里的Hub地址是否正确,或者驱动路径有没有写错。

4. 排查端口占用或防火墙问题

如果Hub和节点都启动了,但还是报连接拒绝,检查4444端口是否被其他程序占用:

  • Windows:执行 netstat -ano | findstr :4444,如果有结果,找到对应的PID结束进程,或者换个Hub端口(启动时加-port 4445,同时修改Nightwatch配置里的selenium_port)
  • Mac/Linux:执行 lsof -i :4444,同样处理占用的进程或换端口

另外,如果你是远程连接Hub,还要确保Hub所在机器的防火墙没有拦截4444端口。

5. 验证依赖版本兼容性

你的依赖版本整体还算匹配,但要注意:

  • chromedriver@2.37 对应Chrome浏览器版本64-66
  • geckodriver@1.11 对应Firefox版本57-61
    如果你的浏览器版本太新或太旧,可能导致节点启动失败,间接影响Grid连接。可以升级对应驱动版本试试(比如chromedriver升到对应你Chrome版本的版本)。

完成以上步骤后,再运行你的Nightwatch-Cucumber测试,应该就能正常连接到Selenium Grid了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:53:22