不同网络环境是否会触发Selenium的UnreachableBrowserException异常
问题根因与解决方案
你遇到的报错本质是本地机器和虚拟机的网络连通性故障,完全可以通过传入虚拟机IP的方式在本地运行脚本。你认知中的「hub与节点需要接入同一网络」是Selenium Grid集群内部的规则,只要求同一集群下的hub和所属节点网络互通即可,你的虚拟机内的hub和节点已经都接入network#2,满足该规则,不需要和执行脚本的本地机器处于同一网络。
从异常栈可以明确错误来源:
Caused by: java.net.ConnectException: Failed to connect to /30.173.46.174:4444 ... Caused by: java.net.ConnectException: Connection timed out: connect
报错显示本地机器根本无法和虚拟机IP的4444端口建立TCP连接,和Selenium Grid的功能逻辑无关。
排查步骤
- 第一步:验证基础网络连通性
在本地机器执行命令ping 30.173.46.174,如果返回请求超时,先调整虚拟机网络配置:- 若使用VMware/VirtualBox等虚拟化软件,将虚拟机网络适配器从NAT模式切换为桥接模式,让虚拟机直接接入物理局域网;也可以保留NAT模式,配置端口映射,将虚拟机的4444端口映射到宿主机的指定端口
- 关闭虚拟机的系统防火墙,或者添加入站规则放行4444端口的外部访问
- 第二步:验证端口可达性
ping通后,在本地执行命令Test-NetConnection 30.173.46.174 -Port 4444(Windows PowerShell)或者telnet 30.173.46.174 4444,确认4444端口可正常访问 - 第三步:确认Hub启动配置
启动虚拟机内的Selenium Hub时,不要绑定127.0.0.1,要指定绑定0.0.0.0或者虚拟机的实际网卡IP,示例启动命令:java -jar selenium-server-standalone-3.153.59.jar -role hub -host 0.0.0.0
所有配置校验完成后重新执行脚本即可正常访问虚拟机内的Grid集群。
内容的提问来源于stack exchange,提问作者Nandan A
相关产品推荐
相关产品推荐

