自动化工具 有没有大佬在服务器上运行 playwright 自动化测试脚本的

王路 · May 21, 2025 · Last by 王路 replied at May 25, 2025 · 5011 hits

我在公司服务器上部署了一套测试项目,想用 playwright 执行 ui 自动化测试,本地 win 运行可以,在服务器行运行
报错如下

 开始手动执行HandExcute
/tmp/playwright-java-599071362851302508/node: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found (required by /tmp/playwright-java-599071362851302508/node)
/tmp/playwright-java-599071362851302508/node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by /tmp/playwright-java-599071362851302508/node)
/tmp/playwright-java-599071362851302508/node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.25' not found (required by /tmp/playwright-java-599071362851302508/node)
2025-05-20 16:27:33.401 ERROR 7 --- [     Api-test-3] c.w.t.handle.ui.AsyncExcuteHandleUi      : 开始执行:
总体执行失败: Failed to create driver
2025-05-20 16:27:33.402 ERROR 7 --- [     Api-test-3] c.w.t.handle.ui.AsyncExcuteHandleUi      : Test execution failed: Failed to create driver
java.lang.RuntimeException: Failed to create driver
        at com.microsoft.playwright.impl.driver.Driver.createAndInstall(Driver.java:105) ~[driver-1.42.0.jar!/:1.42.0]
        at com.microsoft.playwright.impl.driver.Driver.ensureDriverInstalled(Driver.java:57) ~[driver-1.42.0.jar!/:1.42.0]
        at com.microsoft.playwright.impl.PlaywrightImpl.createImpl(PlaywrightImpl.java:46) ~[playwright-1.42.0.jar!/:1.42.0]
        at com.microsoft.playwright.impl.PlaywrightImpl.create(PlaywrightImpl.java:36) ~[playwright-1.42.0.jar!/:1.42.0]
        at com.microsoft.playwright.Playwright.create(Playwright.java:110) ~[playwright-1.42.0.jar!/:1.42.0]
        at com.microsoft.playwright.Playwright.create(Playwright.java:114) ~[playwright-1.42.0.jar!/:1.42.0]
        at com.wl.testtools.handle.ui.AsyncExcuteHandleUi.executeStartUi(AsyncExcuteHandleUi.java:39) ~[classes!/:0.0.1-SNAPSHOT]
        at com.wl.testtools.service.impl.StartApiTestServiceImpl.startApiTest(StartApiTestServiceImpl.java:134) ~[classes!/:0.0.1-SNAPSHOT]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
        at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344) ~[spring-aop-5.3.9.jar!/:5.3.9]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) ~[spring-aop-5.3.9.jar!/:5.3.9]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.9.jar!/:5.3.9]
        at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115) ~[spring-aop-5.3.9.jar!/:5.3.9]
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
        at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
Caused by: java.lang.RuntimeException: Failed to install browsers, exit code: 1
        at com.microsoft.playwright.impl.driver.jar.DriverJar.installBrowsers(DriverJar.java:100) ~[driver-bundle-1.42.0.jar!/:1.42.0]
        at com.microsoft.playwright.impl.driver.jar.DriverJar.initialize(DriverJar.java:69) ~[driver-bundle-1.42.0.jar!/:1.42.0]
        at com.microsoft.playwright.impl.driver.Driver.initialize(Driver.java:64) ~[driver-1.42.0.jar!/:1.42.0]
        at com.microsoft.playwright.impl.driver.Driver.createAndInstall(Driver.java:101) ~[driver-1.42.0.jar!/:1.42.0]
        ... 19 common frames omitted

说明一下:项目是通过 dockerfile 指定镜像 +jenkins 执行流水线 +k8s 部署
通过 ai 修改 dockerfile 文件,k8s 配置,还是运行不了,(尝试了好多种方式,)

有没有志同道合的人,来相互探讨一下

共收到 19 条回复 时间 点赞

我是使用 python 镜像的,再通过指令安装相关的 python 环境&playwright 环境,可以正常启动,碰到的问题都是浏览器启动参数带来的一些稳定性问题。
建议你直接手动启动基础容器,先在容器内部把指令调试通过,,再写完整的镜像文件。(容器内可能存在网络、下载、指令缺失等等问题)

镜像用错了

依赖冲突导致

王路 #4 · May 21, 2025 Author
Ali 回复

我是直接在我的测试框架上改造的,包打好了,启动不起来,感觉像是内存不够,后面再试试,原来项目 700 多 M,和 playwright 打一起就 1.4g 了

王路 #5 · May 21, 2025 Author
初夏 回复

我找运维把镜像下载下来了,重新打到公司仓库里了,还在试,现在镜像包 1.4g,你们的都多大

王路 #6 · May 21, 2025 Author
fox 回复

应该不是

7Floor has deleted
王路 回复

如果是 java 脚本那就用 java 的镜像

王路 回复

可以贴更多的报错信息么;包打好的定义是指镜像构建成功了,还是构建成功且能在启动的容器里正常执行用例呢。

上容器看下 nodejs 的情况,PLAYWRIGHT_NODEJS_PATH 这个环境变量有没有配,手动启动下 nodejs 看能不能启动

很简单用 window 服务器安装 node 高版本没啥限制,换一下服务器就行了

王路 #12 · May 23, 2025 Author
Ali 回复

025-05-23 12:06:42.836 INFO 7 --- [ Api-test-4] c.w.t.s.impl.StartApiTestServiceImpl : 开始手动执行,HandExcute
/tmp/playwright-java-2388869297548995060/node: /lib/x86_64-linux-gnu/libm.so.6: version GLIBC_2.27' not found (required by /tmp/playwright-java-2388869297548995060/node)
/tmp/playwright-java-2388869297548995060/node: /lib/x86_64-linux-gnu/libc.so.6: version
GLIBC_2.28' not found (required by /tmp/playwright-java-2388869297548995060/node)
/tmp/playwright-java-2388869297548995060/node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.25' not found (required by /tmp/playwright-java-2388869297548995060/node)
2025-05-23 12:06:43.570 ERROR 7 --- [ Api-test-4] c.w.t.handle.ui.AsyncExcuteHandleUi : 开始执行:
总体执行失败: Failed to create driver
2025-05-23 12:06:43.576 ERROR 7 --- [ Api-test-4] c.w.t.handle.ui.AsyncExcuteHandleUi : Test execution failed: Failed to create driver
java.lang.RuntimeException: Failed to create driver
at com.microsoft.playwright.impl.driver.Driver.createAndInstall(Driver.java:105) ~[driver-1.42.0.jar!/:1.42.0]
at com.microsoft.playwright.impl.driver.Driver.ensureDriverInstalled(Driver.java:57) ~[driver-1.42.0.jar!/:1.42.0]
at com.microsoft.playwright.impl.PlaywrightImpl.createImpl(PlaywrightImpl.java:46) ~[playwright-1.42.0.jar!/:1.42.0]
at com.microsoft.playwright.impl.PlaywrightImpl.create(PlaywrightImpl.java:36) ~[playwright-1.42.0.jar!/:1.42.0]
at com.microsoft.playwright.Playwright.create(Playwright.java:110) ~[playwright-1.42.0.jar!/:1.42.0]
at com.microsoft.playwright.Playwright.create(Playwright.java:114) ~[playwright-1.42.0.jar!/:1.42.0]
at com.wl.testtools.handle.ui.AsyncExcuteHandleUi.executeStartUi(AsyncExcuteHandleUi.java:43) ~[classes!/:0.0.1-SNAPSHOT]
at com.wl.testtools.service.impl.StartApiTestServiceImpl.startApiTest(StartApiTestServiceImpl.java:134) ~[classes!/:0.0.1-SNAPSHOT]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344) ~[spring-aop-5.3.9.jar!/:5.3.9]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) ~[spring-aop-5.3.9.jar!/:5.3.9]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.9.jar!/:5.3.9]
at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115) ~[spring-aop-5.3.9.jar!/:5.3.9]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
Caused by: java.lang.RuntimeException: Failed to install browsers, exit code: 1
at com.microsoft.playwright.impl.driver.jar.DriverJar.installBrowsers(DriverJar.java:100) ~[driver-bundle-1.42.0.jar!/:1.42.0]
at com.microsoft.playwright.impl.driver.jar.DriverJar.initialize(DriverJar.java:69) ~[driver-bundle-1.42.0.jar!/:1.42.0]
at com.microsoft.playwright.impl.driver.Driver.initialize(Driver.java:64) ~[driver-1.42.0.jar!/:1.42.0]
at com.microsoft.playwright.impl.driver.Driver.createAndInstall(Driver.java:101) ~[driver-1.42.0.jar!/:1.42.0]
... 19 common frames omitted

王路 #13 · May 23, 2025 Author
mai 回复

我现在又搞了容器专门去执行 playwright,本地已经调试通过了

代码里加了,还是创建驱动失败

王路 回复


1.42 版本看着是这个启动脚本没起来,看下 playwright-java-下面是不是有 playwright.sh 这个?

可以使用官方镜像,默认的是 java17 环境

Author only
Author only
王路 #18 · May 25, 2025 Author
mai 回复

我是直接写死到代码里的,可以了,我的项目的基础镜像里面 Linux 版本太低了,重新让运维拉了个 jdk+linux 的镜像,现在可以了

王路 #19 · May 25, 2025 Author
bauul 回复

现在可以了

王路 #20 · May 25, 2025 Author
沈大伟 回复

我直接拉了个 playwright 的镜像,开放一个端口,作为执行器,自己的项目去访问这个端口
docker run -d \

-p 36100:36100 \
--name playwright-server \
harbor.nengliangtech.com/dev/playwright:v1.42.0-focal \
npx playwright@1.42.0 run-server --port 36100 --host 0.0.0.0

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up