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

Selenium Docker镜像中用Chrome Driver运行Intern JS单元测试报错问题

问题排查与解决方案

根因定位

你遇到的问题由两个核心原因导致:

  1. ChromeDriver与Chrome版本严重不兼容
  2. 容器内的Chrome无法访问运行在宿主机上的Intern代理服务

具体修复步骤

1. 修复ChromeDriver版本不兼容问题

你手动安装的ChromeDriver 2.19仅支持Chrome 44~49版本,和容器内安装的Chrome 95完全不匹配,这就是Driver info: driver.version: unknown报错的直接原因。

  • 删掉你自定义DockerFile中手动安装Chrome和ChromeDriver的步骤,selenium/standalone-chrome官方镜像已经默认预装了与当前Chrome版本完全匹配的ChromeDriver,不需要额外手动安装,避免版本冲突。
  • 如果必须手动安装,要把CHROMEDRIVER_VERSION参数修改为与Chrome 95匹配的版本,比如95.0.4638.69,ChromeDriver大版本号必须和Chrome主版本号完全一致。

2. 修复容器网络连接问题

报错中的net::ERR_CONNECTION_REFUSED是因为Chrome运行在容器内部,访问http://localhost:9000时指向的是容器自身的9000端口,而你的Intern代理服务运行在宿主机上,容器默认无法直接通过localhost访问宿主机服务,可任选以下一种方案解决:

  • 方案一:修改Intern配置文件,将proxyUrl从http://localhost:9000/改为http://你的宿主机局域网IP:9000/,比如宿主机IP为192.168.1.100,就改成http://192.168.1.100:9000/。
  • 方案二:修改Docker启动命令,使用host网络模式启动容器,命令改为:
docker run -d --net=host -v /dev/shm:/dev/shm selenium/standalone-chrome

该模式下容器会和宿主机共享网络栈,容器内的localhost就等同于宿主机的localhost,可直接访问Intern代理的9000端口。

3. 验证步骤

修复后先做以下验证再跑测试:

  • 访问http://localhost:4444/ui确认Selenium控制台可正常打开,服务运行正常。
  • 进入运行中的Chrome容器,执行curl http://<替换为实际的proxyUrl地址>,确认可以正常获取返回内容,排除网络不通的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:36:04