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

Docker容器中运行behave/selenium测试启动失败求助

解决Docker中Chromium/ChromeDriver启动失败(DevToolsActivePort不存在)问题

1. 优先修复ChromeDriver与Chromium版本不兼容问题

ChromeDriver必须与Chromium的主版本完全匹配,你当前使用的ChromeDriver 114.0.5735.90和Chromium 122.0.6261.128版本差距过大,这是启动失败的核心原因之一。

  • 方案1:将Chromium降级至114.x版本,与现有ChromeDriver匹配
  • 方案2:将ChromeDriver升级至122.0.6261.x版本,与现有Chromium匹配
    示例Dockerfile中安装对应版本ChromeDriver:
    # 下载与Chromium 122.0.6261.128匹配的ChromeDriver
    RUN wget https://chromedriver.storage.googleapis.com/122.0.6261.128/chromedriver_linux64.zip && \
        unzip chromedriver_linux64.zip && \
        mv chromedriver /usr/local/bin/ && \
        chmod +x /usr/local/bin/chromedriver && \
        rm chromedriver_linux64.zip
    

2. 配置Chrome适配Docker环境的启动参数

在environment.py中为ChromeOptions添加无头模式及Docker专属参数,解决DevToolsActivePort文件不存在的问题:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def before_all(context):
    chrome_options = Options()
    # 新版无头模式,兼容性更强
    chrome_options.add_argument("--headless=new")
    # 禁用沙箱模式(Docker环境下必须)
    chrome_options.add_argument("--no-sandbox")
    # 禁用/dev/shm使用,避免Docker内存限制导致的崩溃
    chrome_options.add_argument("--disable-dev-shm-usage")
    # 指定调试端口,强制生成DevToolsActivePort文件
    chrome_options.add_argument("--remote-debugging-port=9222")
    # 可选:禁用GPU加速(部分无头环境需要)
    chrome_options.add_argument("--disable-gpu")
    
    # 初始化WebDriver
    context.driver = webdriver.Chrome(options=chrome_options)

def after_all(context):
    if hasattr(context, 'driver'):
        context.driver.quit()

3. 避免以Root用户运行测试

Chrome默认禁止Root用户启动,即使加了--no-sandbox也可能出现异常。在Dockerfile中创建普通用户并切换:

RUN useradd -m selenium-user
USER selenium-user

4. 确保安装Chromium依赖库

Oracle Linux 9中缺少图形依赖库会导致Chromium启动失败,在Dockerfile中添加依赖安装:

RUN dnf install -y chromium libX11 libXext libXrender libXtst libXss && \
    dnf clean all

5. 检查启动脚本bdds.sh

确保脚本中没有设置多余的环境变量(如DISPLAY),并正确切换到测试目录:

#!/bin/bash
# 切换到测试文件所在目录
cd /opt/behave-tests
# 启动behave测试
behave features/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 14:26:39