Selenium Grid节点注册失败求助:非环回IP未找到及反射访问警告
解决Selenium Grid节点注册的两个核心问题
我来帮你拆解这两个场景下的问题,逐个给出可行的解决方案:
一、LAN环境下的非回环IP检测失败
报错org.openqa.selenium.WebDriverException: Could not find a non-loopback ip4 address for this machine的原因是,Selenium节点默认会自动扫描本机的非回环IP,但你的Ubuntu虚拟机在LAN网络下,节点没能正确识别到可用的对外IP。
解决办法二选一:
- 启动命令手动指定IP:在节点启动命令末尾加上
-host 你的虚拟机LAN IP(比如你的虚拟机LAN IP是192.168.2.x),命令示例:java -Dwebdriver.gecko.driver="/home/mehamgn/Documents/drivers/geckodriver/" -jar selenium-server-standalone-3.12.0.jar -role node -nodeConfig grid_node.json -host 192.168.2.x - 配置文件添加IP字段:直接在
grid_node.json里新增"host": "你的虚拟机LAN IP",让节点固定用这个IP注册。
二、WiFi环境下节点无法连接Hub的问题
从日志能看到,节点一直在尝试连接localhost/127.0.0.1:4444,但你配置文件里明明写了hubHost":"192.168.2.8,这说明配置没生效,加上网络连通性可能有问题,咱们一步步来:
1. 修正配置文件的Hub地址参数
Selenium 3.x的节点配置中,用hubUrl指定完整的Hub注册URL比分开写hubHost和hubPort更可靠,不容易出现解析错误。修改你的grid_node.json,把hubHost和hubPort替换成:
"hubUrl": "http://192.168.2.8:4444/grid/register"
2. 验证虚拟机到Windows主机的网络连通性
先在Ubuntu虚拟机里ping Windows主机的IP192.168.2.8,如果ping不通:
- 检查VirtualBox的网络模式,切换到桥接模式,让虚拟机直接接入WiFi网络,获取和主机同网段的IP;
- 暂时关闭Windows主机的防火墙(测试用),或者在防火墙上添加入站规则,允许4444端口的访问。
3. 处理非法反射访问警告
这个警告是Java 9+和旧版本Selenium(3.12.0)的兼容性问题,Selenium 3.12.0对Java 9+的模块化支持不完善。解决办法:
- 最稳妥的是降级Java到8版本,Selenium 3.x对Java 8的支持最完善;
- 升级Selenium Server到3.141.59及以上版本,新版本修复了这个反射访问的问题。
最后验证步骤
- 先确认Windows主机的Hub已经启动,在虚拟机的浏览器里打开
http://192.168.2.8:4444/grid/console,能看到Hub控制台说明网络没问题; - 用修改后的配置文件重新启动节点,观察日志是否显示“Registered node successfully”之类的成功信息。
内容的提问来源于stack exchange,提问作者Mehavarnan Murugan
相关产品推荐
相关产品推荐

