如何在单个独立Docker容器中运行Selenium测试(无需docker-compose)
单个Docker容器运行Selenium Chrome测试(无Selenium Server)
问题原因
状态码127错误是因为容器内缺少Chrome运行所需的系统依赖,或是Chrome与chromedriver版本不匹配。以下是无需docker-compose的单容器最简实现:
1. 测试脚本 test.py
from selenium import webdriver from selenium.webdriver.chrome.options import Options def run_test(): # 配置Chrome无头模式及容器运行必需参数 chrome_options = Options() chrome_options.add_argument("--headless=new") chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-dev-shm-usage") chrome_options.add_argument("--disable-gpu") chrome_options.add_argument("--window-size=1920,1080") # 初始化ChromeDriver(自动匹配容器内安装的Chrome版本) driver = webdriver.Chrome(options=chrome_options) try: # 替换为你的公司门户地址 driver.get("https://your-company-portal.com") # 验证页面标题(替换为预期标题) assert "公司门户" in driver.title, f"页面标题不符:{driver.title}" print("测试通过:成功访问公司门户") finally: driver.quit() if __name__ == "__main__": run_test()
2. Dockerfile
# 使用轻量Python基础镜像 FROM python:3.10-slim # 设置环境变量避免交互提示 ENV DEBIAN_FRONTEND=noninteractive # 安装系统依赖、Chrome浏览器及chromedriver RUN apt-get update && apt-get install -y --no-install-recommends \ wget \ unzip \ chromium \ chromium-driver \ libnss3 \ libgconf-2-4 \ libxss1 \ libasound2 \ && rm -rf /var/lib/apt/lists/* # 安装兼容版本的Selenium RUN pip install selenium==4.10.0 # 复制测试脚本到容器 COPY test.py /app/test.py # 设置工作目录 WORKDIR /app # 运行测试 CMD ["python", "test.py"]
构建与运行
- 构建镜像:
docker build -t company-portal-test .
- 运行测试容器:
docker run --rm company-portal-test
关键说明
- 使用
chromium和chromium-driver而非官方Chrome,Debian镜像自带的包更适配容器环境 --no-sandbox和--disable-dev-shm-usage是容器内运行Chrome的必需参数,避免权限和内存限制问题- Selenium版本需与Chrome版本兼容(示例中4.10.0适配Chrome 114+)
内容的提问来源于stack exchange,提问作者m0ss
相关产品推荐
相关产品推荐

