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

在OpenShift 4的Jenkins中安装Chrome及解决Selenium驱动执行异常

OpenShift Jenkins环境下Selenium Chrome自动化测试故障解决

问题梳理

  • ChromeDriver提示无法执行:NoSuchDriverException
  • OpenShift容器内无sudo权限,无法安装Chrome
  • 下载Chrome/ChromeDriver时网络连接中断

分步解决方案

一、修复ChromeDriver执行权限与路径

  1. 赋予可执行权限
    在Jenkins构建脚本中添加:
    chmod +x ./chromedriver
    
  2. 使用绝对路径
    修改Drivers.java中的路径配置为Jenkins工作空间内的绝对路径:
    System.setProperty("webdriver.chrome.driver", "/var/lib/jenkins/workspace/你的项目名/chromedriver");
    

二、容器内无sudo安装Chrome

在Jenkins构建步骤中执行以下命令(适配RHEL环境):

# 安装依赖组件
yum install -y wget unzip xorg-x11-server-Xvfb libX11 libXext libXrender libXtst libXScrnSaver
# 下载Chrome稳定版RPM包
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
# 本地安装,跳过依赖检查
rpm -ivh --nodeps google-chrome-stable_current_x86_64.rpm
# 验证安装
google-chrome --version

三、配置Chrome无头运行参数

必须启用无头模式才能在无图形界面的容器内运行,修改Drivers.java的ChromeOptions:

options.addArguments("--headless=new"); // Selenium 4.10+推荐模式
options.addArguments("--no-sandbox");   // 容器环境必填,规避权限问题
options.addArguments("--disable-dev-shm-usage"); // 解决共享内存不足
// 保留原有其他参数
options.addArguments("--window-size=1920,1080");
options.addArguments("--incognito");
options.setPageLoadStrategy(PageLoadStrategy.NORMAL);

四、解决网络下载问题

  1. 配置代理(如果有内部代理)
    在构建脚本开头添加:
    export http_proxy=http://你的代理地址:端口
    export https_proxy=http://你的代理地址:端口
    
  2. 预下载资源到代码仓库
    将Chrome RPM包和对应版本的ChromeDriver上传到项目仓库,构建时直接使用本地文件:
    rpm -ivh --nodeps ./google-chrome-stable_current_x86_64.rpm
    chmod +x ./chromedriver
    

五、Selenium 4.x优化配置(推荐)

Selenium 4.6+支持自动管理驱动,无需手动设置webdriver.chrome.driver,简化Drivers.java:

public static void initializeBrowser(String browserName){
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--headless=new");
    options.addArguments("--no-sandbox");
    options.addArguments("--disable-dev-shm-usage");
    options.addArguments("--window-size=1920,1080");
    options.addArguments("--incognito");
    options.setPageLoadStrategy(PageLoadStrategy.NORMAL);

    if(browserName.equals("chrome")){
        driver = new ChromeDriver(options);
    }
    // 其他浏览器配置保持不变
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 01:00:22