首页 > 解决方案 > 在 docker 容器中找不到 Chrome

问题描述

我正在尝试在 docker 容器中运行 Selenium 测试,但得到

错误:ECONNREFUSED 连接 ECONNREFUSED 127.0.0.1:4444

码头工人-compose.yml

version: "3"
services:
  chrome:
    image: selenium/standalone-chrome-debug
    ports:
      - "4444:4444"
  webtest:
    build: .

测试文件.js

var sw = require('selenium-webdriver');
let driver = new sw.Builder()
    .forBrowser('chrome')
    .usingServer('http://localhost:4444/wd/hub')
    .build();
driver.get('https://www.google.com/');

当我在容器外运行 testfile.js 时,它正在工作。面临仅在容器内运行的问题

标签: seleniumdockerdocker-composeselenium-chromedriver

解决方案


您需要将“ http://localhost:4444/wd/hub ”替换为“ http://chrome:4444/wd/hub ”,并配置docker网络。容器“localhost”内部不是您的主机,因此该端口无法访问并拒绝连接。端口映射仅适用于容器和主机之间。

至少在容器之间创建一个链接(见下文),最好直接配置网络(https://docs.docker.com/compose/networking/

version: "3"
services:
  chrome:
    image: selenium/standalone-chrome-debug
    ports:
      - "4444:4444"
  webtest:
    build: .
    links:
     - chrome

推荐阅读