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

企业Jenkins服务器Playwright Java联调BrowserStack报错排查

Jenkins运行BrowserStack Playwright Java代码报错解决方案

问题详情

在企业自有Jenkins服务器上构建通过BrowserStack运行Chromium的Playwright Java代码时,出现以下报错:

java.lang.RuntimeException: Failed to create driver
Caused by: java.lang.RuntimeException: Failed to install browsers, exit code: 1

相关核心代码:

import com.google.gson.JsonObject;
import com.microsoft.playwright.*;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

public class LaunchBrowserInBrowserStack {

    final String BROWSERSTACK_USERNAME = "myusername";
    final String BROWSERSTACK_ACCESS_KEY = "myaccesskey";
    Playwright playwright;
    Browser browser;

    @BeforeClass
    public void setUp() throws UnsupportedEncodingException {
        JsonObject capabilitiesObject = new JsonObject();
        capabilitiesObject.addProperty("browser", "chrome");    
        capabilitiesObject.addProperty("browser_version", "latest");
        capabilitiesObject.addProperty("os", "windows");
        capabilitiesObject.addProperty("os_version", "10");
        capabilitiesObject.addProperty("name", "Playwright in browserstack");
        capabilitiesObject.addProperty("build", "playwright-java-5");
        capabilitiesObject.addProperty("project", "APP Automation Project");
        capabilitiesObject.addProperty("browserstack.username", BROWSERSTACK_USERNAME);
        capabilitiesObject.addProperty("browserstack.accessKey", BROWSERSTACK_ACCESS_KEY);

        playwright = Playwright.create();
        BrowserType chromium = playwright.chromium();
        String caps = URLEncoder.encode(capabilitiesObject.toString(), "utf-8");
        String ws_endpoint = "wss://cdp.browserstack.com/playwright?caps=" + caps;
        browser = chromium.connect(ws_endpoint);
    }
}

使用的构建命令:

mvn clean test -Dmaven.test.failure.ignore=true -Dsurefire.suiteXmlFiles=TestSuites/DemoTestPlan.xml

尝试安装Chromium时出现系统依赖不兼容错误:

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install chromium"

/tmp/playwright-java-7544179260710857064/node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by /tmp/playwright-java-7544179260710857064/node)
/tmp/playwright-java-7544179260710857064/node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by /tmp/playwright-java-7544179260710857064/node)
/tmp/playwright-java-7544179260710857064/node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by /tmp/playwright-java-7544179260710857064/node)
/tmp/playwright-java-7544179260710857064/node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /tmp/playwright-java-7544179260710857064/node)
/tmp/playwright-java-7544179260710857064/node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /tmp/playwright-java-7544179260710857064/node)
/tmp/playwright-java-7544179260710857064/node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /tmp/playwright-java-7544179260710857064/node)

关键结论:安装Chromium无法解决问题

你是通过WebSocket连接BrowserStack云端运行浏览器,本地Jenkins服务器不需要安装任何浏览器。Playwright报错是因为默认会自动尝试安装本地浏览器,但这一步完全多余,反而因服务器系统依赖不足导致失败。


解决方案

1. 禁用Playwright自动安装浏览器(优先推荐)

修改代码中创建Playwright实例的逻辑,添加skipInstallBrowsers配置跳过浏览器安装:

playwright = Playwright.create(new Playwright.CreateOptions().setSkipInstallBrowsers(true));

这样启动Playwright时不会触发本地浏览器安装流程,直接连接BrowserStack云端浏览器即可,从根源解决报错。

2. 若后续需本地运行浏览器,解决系统依赖问题

如果之后有在Jenkins本地运行Playwright浏览器的需求,可通过以下方式解决GLIBC依赖问题:

  • 使用Docker容器构建:采用Playwright官方提供的预配置镜像(如mcr.microsoft.com/playwright/java:v1.40.0-jammy),在Jenkins中通过Docker执行构建命令,容器内已预装所有依赖,避开服务器系统限制。
  • 升级系统依赖(谨慎操作):联系运维升级服务器的GLIBC和libstdc++版本,但企业服务器通常有稳定性要求,此方法需评估风险。
  • 替换兼容版Node.js:手动下载适配服务器GLIBC版本的Node.js,替换Playwright临时目录中的Node执行文件,此方法操作繁琐,仅作为备选。

内容的提问来源于stack exchange,提问作者Sameera De Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 03:39:54