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

Jenkins运行Karate 1.2.0测试时screenshot()间歇性抛PolyglotException

Jenkins上Karate测试截图间歇性失败的解决方案

问题详情

  • 环境:Karate 1.2.0版本,测试在本地运行正常,Jenkins执行时间歇性失败
  • 报错信息:

js failed:

01: screenshot()
<<<<
org.graalvm.polyglot.PolyglotException

  • com.intuit.karate.driver.DevToolsDriver.screenshot(DevToolsDriver.java:895)

  • com.intuit.karate.driver.DevToolsDriver.screenshot(DevToolsDriver.java:858)

  • com.intuit.karate.driver.Driver.screenshot(Driver.java:120)

  • .:anonymous(Unnamed:1)

  • 相关POM依赖:

<dependency>
    <groupId>com.intuit.karate</groupId>
    <artifactId>karate-core</artifactId>
    <version>1.2.0</version>
</dependency>

<dependency>
    <groupId>com.intuit.karate</groupId>
    <artifactId>karate-junit4</artifactId>
    <version>1.2.0</version>
    <scope>test</scope>
</dependency>

解决方案

1. 升级Karate版本

Karate 1.2.0的DevToolsDriver截图逻辑存在已知稳定性缺陷,后续版本修复了多个无头浏览器截图相关bug。直接升级到最新稳定版,修改POM依赖版本:

<dependency>
    <groupId>com.intuit.karate</groupId>
    <artifactId>karate-core</artifactId>
    <version>1.4.1</version> <!-- 替换为最新稳定版 -->
</dependency>

<dependency>
    <groupId>com.intuit.karate</groupId>
    <artifactId>karate-junit4</artifactId>
    <version>1.4.1</version>
    <scope>test</scope>
</dependency>

2. 优化Jenkins无头浏览器配置

Jenkins运行在无头环境,需确保Chrome/Chromium启动参数适配环境,避免渲染异常:
在Karate测试中配置驱动参数:

* configure driver = { type: 'chrome', options: { args: ['--headless=new', '--disable-gpu', '--no-sandbox', '--disable-dev-shm-usage', '--window-size=1920,1080'] } }

关键参数说明:

  • --headless=new:使用Chrome新无头模式,渲染逻辑更接近真实浏览器,稳定性更高
  • --disable-dev-shm-usage:解决Jenkins容器环境共享内存不足的问题
  • --window-size:固定窗口尺寸,避免动态窗口大小导致的截图异常

3. 添加截图前的渲染等待

间歇性失败多因页面未完全渲染就执行截图,在screenshot()前增加显式等待:

// 等待关键元素加载完成(推荐)
* waitFor('//div[@id="page-content"]')
// 或固定等待(应急场景使用)
* wait(2000)
* screenshot()

4. 捕获截图异常避免用例失败

若优化后仍有偶发失败,可在测试中捕获异常,不中断整个用例:

* try { screenshot() } catch(e) { karate.log('截图失败:', e) }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 05:06:43