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

Karate UI自动化:如何获取Chrome网络日志及Oauth2.0 Bearer令牌

在Karate UI中获取Chrome网络日志并提取Bearer令牌

1. 配置Chrome启用网络日志

要在Karate UI中捕获Chrome的网络日志,需在浏览器启动配置中开启性能日志采集,核心是设置perfLoggingPrefs参数:

* configure driver = { 
    type: 'chrome', 
    options: { 
        args: ['--enable-logging', '--v=1'], 
        perfLoggingPrefs: { enableNetwork: true, enablePage: true } 
    } 
}
  • perfLoggingPrefs.enableNetwork:开启网络请求日志采集
  • --enable-logging和--v=1:确保Chrome输出可被Karate捕获的日志信息

2. 获取网络日志并提取Bearer令牌

完成微软SSO登录操作后,可通过两种方式获取日志并提取令牌:

方式一:导出HAR格式日志(推荐)

HAR格式包含所有网络请求的完整详情,直接遍历即可找到带Bearer令牌的响应/请求头:

# 完成登录流程后获取HAR日志
* def harLogs = driver.performance.getLogs('HAR')

# 遍历日志条目提取Bearer令牌
* def bearerToken = null
* karate.forEach(harLogs.entries, function(entry){
    # 检查响应头中是否存在Authorization字段
    if (entry.response.headers.Authorization) {
        bearerToken = entry.response.headers.Authorization.replace('Bearer ', '')
    }
})

# 验证令牌获取成功
* assert bearerToken != null

# 后续API请求直接复用令牌
* configure headers = { Authorization: 'Bearer ' + bearerToken }

方式二:实时监听网络请求

通过Chrome DevTools的事件监听,在请求发送时直接捕获令牌:

# 启用网络监控
* driver.devTools.network.enable()

# 定义回调函数捕获带Authorization头的请求
* def captureToken = function(event){
    if (event.request.headers.Authorization) {
        karate.set('bearerToken', event.request.headers.Authorization.replace('Bearer ', ''))
    }
}

# 绑定请求监听事件
* driver.devTools.network.on('requestWillBeSent', captureToken)

# 执行登录操作(比如点击登录按钮、完成SSO授权)
* driver.click('#ms-login-btn')

# 等待令牌捕获完成,超时10秒
* driver.waitFor('bearerToken != null', 10000)

3. 兼容Selenium风格的性能日志获取

如果你习惯Selenium中LogType.PERFORMANCE的方式,Karate也支持直接获取性能类型日志:

* def perfLogs = driver.performance.getLogs('PERFORMANCE')
# 遍历perfLogs条目,根据日志的message字段解析出包含令牌的网络事件

注意:微软SSO场景中,Bearer令牌通常出现在登录完成后的重定向响应头或后续API请求中,你可能需要根据实际的请求URL或响应状态码调整过滤逻辑,确保精准提取目标令牌。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 12:58:21