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

基于selenium/standalone-chrome镜像的Java Selenium容器连接失败求助

解决java.net.UnknownHostException: chrome问题

问题根因

你在同一个Docker容器内同时运行Selenium Chrome Standalone服务和Java测试代码,但代码中使用chrome作为主机名,而容器内部并没有对应的DNS解析记录,导致无法定位到Selenium服务地址。

修复方案

方案1:修改代码中的连接地址

将RemoteWebDriver的目标地址替换为容器内部的本地地址,因为Selenium服务是在当前容器内启动的,localhost或127.0.0.1均可指向容器自身:

WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), DesiredCapabilities.chrome());

方案2:添加容器内部host映射

如果不想修改代码,可通过两种方式将chrome映射到本地回环地址:

  • 在Dockerfile中添加host配置:
    RUN echo "127.0.0.1 chrome" >> /etc/hosts
    
  • 或者在docker run命令中追加参数:
    docker run --add-host chrome:127.0.0.1 [你的镜像名称]
    

方案3:用Docker Compose拆分服务(更规范的生产级方案)

将Selenium Chrome服务和Java测试项目拆分为两个独立容器,利用Docker Compose的自动DNS解析实现通信:

  1. 创建docker-compose.yml文件:
version: '3'
services:
  chrome:
    image: selenium/standalone-chrome:96.0.4664.45
    ports:
      - "4444:4444"
  java-test:
    build: .
    depends_on:
      - chrome
  1. 此时Java代码中原有的http://chrome:4444/wd/hub地址可直接生效,因为Docker Compose会自动为同网络内的容器添加DNS解析。

验证步骤

修改后重新构建镜像(若改动了Dockerfile),运行容器并执行测试,确认UnknownHostException错误不再出现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:14:56