selenium - 在 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 时,它正在工作。面临仅在容器内运行的问题
解决方案
您需要将“ 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
推荐阅读
- amazon-web-services - 将数据从与一个 AWS 账户关联的实时 RDS 数据库实例迁移到与另一个 AWS 账户关联的新 RDS 数据库实例
- ruby-on-rails - net::ERR_NAME_NOT_RESOLVED 对于明确定义的 Route
- xcode - 使用 pkgbuild 将自定义步骤添加到安装
- python-3.x - 配置不当:使用 Django 时 SQLite 3.9.0 或更高版本出错
- php - how to use twig in vue
- c - 直接 I/O 性能
- python - 如何修复 TypeError:__init__() 缺少 1 个必需的位置参数:'y'
- php - 如何使用安装在 Docker 外部的 Nginx 在 Docker 中代理 php-fpm 程序
- python - 我们如何使用 uvicorn 服务器在 cpanel 上部署 django 应用程序?
- android - 使用 Jetpack Compose Navigation 时导航图是否已过时?