如何将WebDriver Sampler获取的Token设置为全局变量?
如何将WebDriver Sampler获取的Token设置为全局变量
嘿,我来帮你搞定这个全局Token的问题!你现在的代码已经能成功从sessionStorage里取出Token了,但vars.put()存储的是线程局部变量——意思就是这个变量只能在当前线程里用,其他线程的HTTP Header Manager根本拿不到它。要让所有线程都能访问,咱们得改用JMeter的props对象,它代表的是JMeter的全局属性,所有线程共享。
修改后的代码
把你的代码改成下面这样就行:
var foo = WDS.browser.executeScript("return window.sessionStorage.getItem('ngStorage-jwtToken');"); var obj = JSON.parse(foo); // 用props存储为全局可访问的属性 props.put("auth", obj.oauth_token); WDS.log.info("全局Token已设置完成:" + props.get('auth'));
在HTTP Header Manager中引用全局Token
不管是哪个线程组里的HTTP Header Manager,都可以通过__P()函数来读取这个全局Token。比如你要在请求头里加Authorization字段,就这么填:
- 头名称:
Authorization - 头值:
Bearer ${__P(auth)}
关键注意点
- 一定要保证执行WebDriver Sampler的线程先于其他需要用Token的线程运行,不然全局属性还没设置,其他请求就会拿不到值。你可以通过调整线程组的执行顺序,或者用Test Plan的逻辑控制器来控制执行流程。
- 如果你的Token有过期时间,记得在合适的时机重新执行这段代码更新全局属性,避免请求失败。
内容的提问来源于stack exchange,提问作者Cod
相关产品推荐
相关产品推荐

