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

如何在同一浏览器会话中运行多个Karate UI自动化场景?

解决Karate UI自动化复用浏览器会话的问题

要让多个场景共用同一浏览器会话,核心是只初始化一次浏览器,避免每个场景(包括Background)重复启动新会话。以下是具体实现步骤:

关键修改点

  1. 移除Background中重复执行的浏览器初始化代码,改用callonce确保初始化逻辑仅运行一次
  2. 在所有场景执行完毕后,手动关闭浏览器或配置自动关闭

修改后的Feature示例

Feature: Verify Search Text field on Google Home Page

  # 仅初始化一次浏览器会话
  * def initBrowser = callonce
    """
    * configure driver = { type: 'chrome', timeout: 5000 }
    * driver 'https://www.google.com/'
    * driver.maximize()
    """

  Background:
    * def baseUrl = 'https://www.google.com/'
    * waitForUrl(baseUrl)
    * delay(1000)

  Scenario Outline: Enter Search Text <searchText>
    * clear("//textarea[@name='q']")
    * input("//textarea[@name='q']", '<searchText>')
    And delay(5000).screenshot()

    Examples:
      | searchText |
      | Amazon     |
      | Flipkart   |

  Scenario: Verify Privacy Page Link is clickable
    * click("//a[text()='Privacy']")
    And delay(5000).screenshot()

  # 所有场景执行完成后关闭浏览器
  * driver.quit()

补充说明

  • callonce是Karate的核心关键字,会确保其包裹的代码在整个Feature执行周期内仅运行一次,完美适配多场景复用会话的需求
  • 如果需要跨Feature复用浏览器会话,可以把初始化逻辑抽成独立的.feature文件,通过callonce read('classpath:init-browser.feature')调用
  • 最后必须手动调用driver.quit()或配置configure driver = { shutdown: true },否则浏览器会一直保持打开状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 01:03:28