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

WebDriverManager的.dockerVolume()在Linux虚拟机引发连接重置错误

问题描述

我用WebDriverManager在Docker中运行自动化测试,为了让测试能访问文件,用以下代码挂载目录:

WebDriverManager wdm = WebDriverManager.chromedriver().browserInDocker().enableVnc().enableRecording().dockerVolumes("/home/GitHub/e2e-test:/home/selenium");
driver = wdm.create();

这段代码在本地运行完全正常,但在GCP的Debian GNU/Linux 11虚拟机上,不添加.dockerVolume()时测试可以正常执行:

WebDriverManager wdm = WebDriverManager.chromedriver().browserInDocker().enableVnc().enableRecording();
driver = wdm.create();

一旦加上.dockerVolume(),就持续抛出错误:

io.github.bonigarcia.wdm.config.WebDriverManagerException: There was an error creating WebDriver object for Chrome
at io.github.bonigarcia.wdm.WebDriverManager.instantiateDriver(WebDriverManager.java:1775)
at io.github.bonigarcia.wdm.WebDriverManager.create(WebDriverManager.java:425)
at e2e.toolset.WebDriverTool.setDriver(WebDriverTool.java:13)

详细日志显示存在Connection reset、Chrome启动崩溃、DevToolsActivePort文件不存在等问题。

解决方案

针对GCP虚拟机上挂载卷后出现的Chrome启动问题,可按以下步骤排查修复:

  • 修复挂载目录权限
    GCP虚拟机宿主目录/home/GitHub/e2e-test的权限可能限制了Docker容器内默认的selenium用户(UID 1200)访问,执行命令调整权限:

    sudo chown -R 1200:1200 /home/GitHub/e2e-test
    sudo chmod -R 755 /home/GitHub/e2e-test
    

    也可以在挂载时添加强制安全上下文参数适配SELinux:

    dockerVolumes("/home/GitHub/e2e-test:/home/selenium:Z")
    
  • 添加Chrome启动参数解决端口问题
    挂载卷后Chrome可能无法正常生成DevTools端口文件,手动添加启动参数规避沙箱、内存及端口冲突:

    WebDriverManager wdm = WebDriverManager.chromedriver()
        .browserInDocker()
        .enableVnc()
        .enableRecording()
        .dockerVolumes("/home/GitHub/e2e-test:/home/selenium")
        .capabilities(new ChromeOptions()
            .addArguments("--no-sandbox")
            .addArguments("--disable-dev-shm-usage")
            .addArguments("--remote-debugging-port=9222")
            .addArguments("--user-data-dir=/home/selenium/chrome-profile"));
    driver = wdm.create();
    
  • 检查Docker daemon权限
    确保当前用户拥有Docker操作权限,将用户加入docker组并重启服务:

    sudo usermod -aG docker $USER
    newgrp docker
    sudo systemctl restart docker
    
  • 验证挂载路径有效性
    手动启动测试容器确认挂载是否正常:

    docker run -v /home/GitHub/e2e-test:/home/selenium selenium/standalone-chrome:latest ls -la /home/selenium
    

    若能看到宿主目录文件则挂载正常,否则检查路径拼写或权限设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:40:35