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

如何在未安装Chrome浏览器的Linux Jenkins服务器运行Selenium脚本

可行解决方案

以下三种方案均不需要运维在Jenkins服务器安装任何软件,完全在项目代码层面实现,符合要求:

方案1:基于Docker容器执行测试(推荐)

Jenkins普遍默认支持Docker运行权限,你可以通过容器化测试流程规避宿主机的Chrome依赖问题,无需修改现有Selenium业务代码:

  • 项目根目录新增Dockerfile,直接基于官方预装Chrome、chromedriver的Selenium镜像构建测试环境,示例配置:
# 构建阶段:拉取Maven镜像提前下载依赖
FROM maven:3.8.6-openjdk-11 AS build
WORKDIR /app
COPY pom.xml .
RUN mvn dependency:go-offline
COPY src ./src

# 运行阶段:使用预装Chrome的Selenium镜像执行测试
FROM selenium/standalone-chrome:latest
USER root
WORKDIR /test
COPY --from=build /app /test
CMD ["mvn", "test"]
  • 调整Jenkins构建步骤,将原有mvn test命令替换为镜像构建+运行命令,测试完成后可直接从容器内拷贝测试报告到宿主机构建工作空间。

方案2:集成Linux便携版Chrome到项目

如果Jenkins不支持Docker运行,可直接将Linux版Chrome便携二进制包提交到Bitbucket仓库,代码内指定Chrome路径即可:

  • 下载和Jenkins服务器架构匹配的Linux Chrome便携版压缩包,解压后放到项目tools/chrome目录,提交到Bitbucket仓库。
  • 修改Selenium配置代码,手动指定Chrome二进制文件路径,WebDriverManager会自动匹配对应版本的chromedriver,示例代码:
ChromeOptions options = new ChromeOptions();
// 指定项目内便携版Chrome的绝对路径
options.setBinary(System.getProperty("user.dir") + "/tools/chrome/chrome");
// 适配Linux无界面运行的必要参数
options.addArguments("--headless=new", "--no-sandbox", "--disable-dev-shm-usage");
WebDriver driver = new ChromeDriver(options);

注:便携版Chrome压缩包大小约120M,不会对Git仓库造成过重负担。

方案3:替换为轻量无界面驱动(适配简单测试场景)

如果你的测试用例没有复杂JS交互、CSS渲染验证需求,可以直接替换ChromeDriver为HtmlUnitDriver,这是纯Java实现的模拟浏览器驱动,完全不依赖本地浏览器:

  • 在pom.xml中新增依赖:
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>htmlunit-driver</artifactId>
    <version>和你项目使用的Selenium主版本保持一致即可</version>
</dependency>
  • 代码中直接初始化HtmlUnitDriver运行测试即可,无需其他配置。

注意事项

  • 选择方案2时需确认便携版Chrome的架构和Jenkins服务器架构匹配,不要误下arm、Windows版本。
  • 所有方案都不会修改服务器原有环境,完全符合运维要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:39:06