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

在AWS CodeBuild中用Docker-Compose运行Python UI测试遇连接拒绝问题

问题根源

你遇到的ConnectionRefusedError是因为两个核心问题:

  • docker run启动的测试容器与docker-compose创建的Selenium Grid容器不在同一Docker网络,容器间无法直接通信
  • 测试代码中使用localhost:4444,容器内的localhost指向容器自身,而非宿主机器的Selenium Hub服务
解决方案

1. 修改测试代码的连接地址

将test.py中的command_executor地址替换为Selenium Hub的服务名(Docker同一网络内可通过服务名解析):

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities   
# 用selenium-hub服务名替代localhost
driver = webdriver.Remote(command_executor='http://selenium-hub:4444/wd/hub',
desired_capabilities=DesiredCapabilities.CHROME)
URL = "https://www.google.ca"
driver.get(URL)
title = driver.title
print('Title------------>', title)

2. 让测试容器加入Selenium Grid的Docker网络

docker-compose默认会为服务创建专属网络,你需要让测试容器加入这个网络才能访问selenium-hub服务:
先修改docker-compose.yaml,显式定义并绑定自定义网络:

version: '3.8'
# 定义自定义网络
networks:
  selenium-grid-net:
    driver: bridge

services:
selenium-hub:
image: selenium/hub
container_name: selenium-hub
ports:
- '4444:4444'
networks:
  - selenium-grid-net  # 加入自定义网络
chrome:
image: selenium/node-chrome
volumes:
- '/dev/shm:/dev/shm'
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
networks:
  - selenium-grid-net  # 加入自定义网络

再修改buildspec.yaml中的docker run命令,加入网络绑定参数:

version: 0.2
phases:
pre_build:
commands:
- docker-compose up --build -d
- docker build -t mygridimage:ver1 .
- docker images
- docker ps -a
# 加入--network参数,让测试容器和Selenium Grid在同一网络
- docker run --network selenium-grid-net mygridimage:ver1
build:
commands:
reports:
pytest_reports:
files:
base-directory: /reports
file-format: JUNITXML
artifacts:
files:
- "**/*"

3. 可选:添加Selenium Hub就绪等待

depends_on仅保证容器启动顺序,不保证服务就绪。可以在buildspec中添加等待命令,确保Selenium Hub完全启动后再运行测试:
在docker-compose up之后添加:

# 等待Selenium Hub就绪
- until curl -s http://localhost:4444/wd/hub/status | grep -q "ready"; do sleep 5; done
验证要点
  • 执行docker network ls确认selenium-grid-net网络存在
  • 执行docker inspect selenium-hub查看其所在网络是否为selenium-grid-net
  • 测试容器启动后,可进入容器执行ping selenium-hub验证网络连通性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 14:45:33