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

Selenium Grid无法连接节点:运行代码时连接超时求助

解决Selenium Grid连接超时(UnreachableBrowserException)问题

从你贴的错误日志和配置信息来看,核心问题很明确:你的测试机器无法连接到Selenium Hub的4444端口——哪怕节点已经成功注册到Hub,但测试请求根本没法抵达Hub。下面是一步步的排查和解决建议:

1. 先确认测试机器和Hub的网络连通性

错误里的Connection timed out是典型的网络层面问题,先从这里入手:

  • 在运行测试代码的机器上,先ping Hub的IP(xxx.xxx.xxx.xxx),看看基础网络能不能通。
  • 再用telnet xxx.xxx.xxx.xxx 4444或者curl http://xxx.xxx.xxx.xxx:4444/wd/hub/status测试端口是否开放。如果telnet连不上、curl没响应,那肯定是Hub的4444端口没对测试机器开放。

2. 检查Hub的绑定地址是否正确

有时候Jenkins的Selenium Hub默认会绑定到localhost或者127.0.0.1,这样只有Hub所在的Jenkins机器能访问它。节点能注册成功可能是因为节点和Hub在同一内网,但测试机器不在这个范围内就访问不了:

  • 先试试访问Hub的控制台页面:http://xxx.xxx.xxx.xxx:4444/grid/console,如果打不开,说明Hub绑定的地址不对。
  • 去Jenkins的Selenium Grid配置里确认Host字段的取值,必须是对外可访问的IP,不能是127.0.0.1或者localhost。

3. 核对测试代码里的RemoteWebDriver初始化

你贴的代码片段缺了RemoteWebDriver的关键初始化部分,得确保代码正确指向Hub:

// 完整的初始化示例,注意路径和能力配置
URL hubUrl = new URL("http://xxx.xxx.xxx.xxx:4444/wd/hub");
// 你节点配置的是Chrome,这里要对应上,别用firefox了
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
WebDriver driver = new RemoteWebDriver(hubUrl, capabilities);

这里要注意两个点:

  • Hub的访问路径是/wd/hub,不是节点注册用的/grid/register,别搞混了。
  • 你代码里用的是DesiredCapabilities.firefox(),但节点配置的是Chrome,就算连通性解决了,Hub也找不到匹配的节点,得把能力配置改成Chrome。

4. 统一Selenium版本,避免兼容性坑

你的错误日志显示Hub用的是Selenium 3.6.0,而节点用的是3.12.0,版本差异可能导致一些隐性的通信问题:

  • 建议把Hub和节点的Selenium版本统一,比如都用3.12.0。可以在Jenkins的Selenium插件设置里指定版本,或者替换Hub的jar包。

5. 检查防火墙和安全组规则

  • 如果Hub在Linux机器上,检查iptables规则有没有开放4444端口给测试机器:
    iptables -L -n | grep 4444
    
    要是没开放,就加一条规则:
    iptables -A INPUT -p tcp -s [你的测试机器IP] --dport 4444 -j ACCEPT
    
  • 如果是云服务器,别忘了检查云平台的安全组配置,确保4444端口对测试机器的IP开放。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:30:39