在Docker中运行Selenium测试时出现UnreachableBrowserException连接拒绝错误
解决Docker Toolbox + Selenium RemoteWebDriver的UnreachableBrowserException问题
你遇到的核心问题是Docker Toolbox的网络特性导致localhost无法访问到Docker容器内的Selenium Hub。Windows 10 Home版的Docker Toolbox依赖VirtualBox创建的Linux虚拟机运行Docker,你代码里的localhost指向的是Windows宿主机本身,但Selenium Hub实际运行在虚拟机内部,因此会出现连接被拒绝的错误。下面是具体的解决步骤:
1. 获取Docker虚拟机的实际IP
打开Docker Quickstart Terminal,执行以下命令获取默认虚拟机的IP地址:
docker-machine ip default
你会得到类似192.168.99.100的结果,这才是你应该用来连接Selenium Hub的正确地址。
2. 修正测试代码中的连接配置
把代码里的localhost替换成刚才拿到的虚拟机IP,同时按照提示更新Chrome的配置方式(官方推荐用ChromeOptions替代旧的DesiredCapabilities):
// 替换成你的Docker虚拟机实际IP URL url = new URL("http://192.168.99.100:4444/wd/hub"); ChromeOptions options = new ChromeOptions(); RemoteWebDriver rDr = new RemoteWebDriver(url, options); rDr.get("https://www.google.com"); System.out.println(rDr.getTitle()); rDr.quit();
3. 验证Selenium Hub和Chrome节点的运行状态
确保你已经正确启动了Selenium Hub和Chrome节点容器:
# 启动Selenium Hub容器 docker run -d -p 4444:4444 selenium/hub:3.141.59 # 启动Chrome节点并关联到Hub docker run -d --link selenium-hub:hub selenium/node-chrome:3.141.59
启动完成后,在浏览器中访问http://<你的虚拟机IP>:4444/grid/console,确认Chrome节点已经成功注册到Hub上。
4. 排查防火墙与端口映射问题
- 检查Windows防火墙是否阻止了虚拟机的4444端口访问,必要时可临时关闭防火墙进行测试。
- 确认启动Hub容器时的端口映射参数
-p 4444:4444已正确设置,确保宿主机能将请求转发到虚拟机内部的Hub服务。
内容的提问来源于stack exchange,提问作者J_Coder
相关产品推荐
相关产品推荐

