在OpenShift 4的Jenkins中安装Chrome及解决Selenium驱动执行异常
OpenShift Jenkins环境下Selenium Chrome自动化测试故障解决
问题梳理
- ChromeDriver提示无法执行:
NoSuchDriverException - OpenShift容器内无sudo权限,无法安装Chrome
- 下载Chrome/ChromeDriver时网络连接中断
分步解决方案
一、修复ChromeDriver执行权限与路径
- 赋予可执行权限
在Jenkins构建脚本中添加:chmod +x ./chromedriver - 使用绝对路径
修改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);
四、解决网络下载问题
- 配置代理(如果有内部代理)
在构建脚本开头添加:export http_proxy=http://你的代理地址:端口 export https_proxy=http://你的代理地址:端口 - 预下载资源到代码仓库
将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
相关产品推荐
相关产品推荐

