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

如何在HTTP Header Manager中使用WebDriver Sampler变量并设为全局变量

我来帮你一步步搞定这个需求,从全局变量设置到Header携带token全给你捋清楚!

解决方案:提取全局auth_token并在HTTP请求头中携带

1. 修改提取代码,设置全局共享变量

你当前的代码是把auth存在线程局部变量里(vars.put),这种变量只能被当前线程访问。要让所有线程组、所有线程都能拿到这个值,得把它存到JMeter的全局属性中。修改你的JSR223 Sampler代码如下:

// 从sessionStorage读取token字符串
var foo = WDS.browser.executeScript("return window.sessionStorage.getItem('ngStorage-jwtToken');") 
// 解析为JSON对象
var obj = JSON.parse(foo); 
// 提取需要的oauth_token
var authToken = obj.oauth_token;

// 存为全局属性(所有线程共享)
props.put("global_auth_token", authToken);

// 同时保留线程局部变量,方便当前线程直接使用
vars.put("auth", authToken);

// 日志打印验证,方便调试
WDS.log.info("全局auth_token已设置:" + props.get("global_auth_token"));

解释下:props是JMeter的全局属性对象,存在这里的值对所有线程可见,完全满足你“全局变量”的需求。

2. 在HTTP Header Manager中引用全局变量

接下来要让所有API请求都带上这个token,操作步骤很简单:

  • 打开你的HTTP Header Manager
  • 点击「Add」添加新请求头
  • Name栏填写API要求的头名称(比如常见的Authorization,具体看你的接口文档)
  • Value栏用JMeter的全局属性读取函数${__P(global_auth_token,)}来引用:

    提示:如果你的API要求Bearer Token格式,Value就填 Bearer ${__P(global_auth_token,)},第二个参数是默认值(找不到属性时用,这里留空即可)

3. 验证全局变量是否生效

你可以加一个Debug Sampler,勾选「Display all properties」,运行后查看Response Data里有没有global_auth_token,确认值是否正确。也可以在其他线程的Sampler里直接用${__P(global_auth_token,)}测试,看能不能拿到正确的token。

小提醒

  • 确保这个JSR223 Sampler在所有需要用token的HTTP请求之前执行(比如放在登录流程的最后一步)。
  • 如果token有过期时间,后续刷新token时,只需要重新执行props.put("global_auth_token", 新的token值),所有请求就会自动用上新token了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:39:00