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

企业VM中Selenium Cucumber Maven框架ChromeDriver适配问题求助

解决方案

一、处理Chrome与ChromeDriver版本匹配问题

虽然Chrome 108.0.5359.124和ChromeDriver 108.0.5359.71属于同大版本,理论上兼容,但如果确实因小版本差异引发问题,可通过以下两种无需系统权限的方式解决:

  • 用WebDriverManager自动管理版本:
    给测试代码引入WebDriverManager依赖(Java示例),它会自动检测当前Chrome版本,下载对应Driver到临时目录,无需手动找包:
    import io.github.bonigarcia.wdm.WebDriverManager;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.chrome.ChromeOptions;
    
    public class SeleniumTest {
        public static void main(String[] args) {
            ChromeOptions options = new ChromeOptions();
            // 保留你已有的参数
            options.addArguments("--remote-allow-origins=*");
            options.addArguments("--disable-dev-shm-usage");
            options.addArguments("--ignore-ssl-errors=yes");
            options.addArguments("--ignore-certificate-errors");
            // 新增关键启动参数
            options.addArguments("--headless=new");
            options.addArguments("--no-sandbox");
    
            // 自动匹配并设置ChromeDriver
            WebDriverManager.chromedriver().setup();
            ChromeDriver driver = new ChromeDriver(options);
            
            // 测试逻辑代码...
            
            driver.quit();
        }
    }
    
  • 在Jenkins构建步骤中手动下载对应Driver:
    添加Shell执行步骤,下载对应版本的ChromeDriver到Job工作目录,再在代码中指定Driver路径:
    # 下载ChromeDriver 108.0.5359.124(适配Linux64)
    wget -O chromedriver.zip https://storage.googleapis.com/chrome-for-testing-public/108.0.5359.124/linux64/chromedriver-linux64.zip
    unzip chromedriver.zip
    chmod +x chromedriver-linux64/chromedriver
    
    代码中添加:
    System.setProperty("webdriver.chrome.driver", "./chromedriver-linux64/chromedriver");
    

二、解决DevToolsActivePort文件不存在问题

这个错误核心是Chrome无法正常启动,结合无系统权限的情况,必须补充以下启动参数:

  • --headless=new:Selenium 4.8+推荐的新无头模式,避免旧无头模式的兼容性问题
  • --no-sandbox:关闭Chrome沙箱,Jenkins运行用户通常无沙箱权限,这是Linux环境下启动失败的常见原因
  • --user-data-dir=/tmp/chrome-profile-${RANDOM}:指定临时用户数据目录,避免Chrome无法写入默认目录的权限冲突

完整参数配置示例:

ChromeOptions options = new ChromeOptions();
options.addArguments("--remote-allow-origins=*");
options.addArguments("--disable-dev-shm-usage");
options.addArguments("--ignore-ssl-errors=yes");
options.addArguments("--ignore-certificate-errors");
options.addArguments("--headless=new");
options.addArguments("--no-sandbox");
options.addArguments("--user-data-dir=/tmp/chrome-profile-" + System.currentTimeMillis());

三、验证Jenkins运行环境

在Jenkins Job中添加Shell步骤,检查关键权限信息:

# 查看Chrome执行权限
ls -l /usr/bin/google-chrome
# 查看Jenkins运行用户
echo $USER
# 检查临时目录权限
mkdir -p /tmp/test-chrome-dir && echo "临时目录可写" || echo "临时目录不可写"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 03:54:52