登录后我有以下回复:
Response Data: {"status":"ok","userId":"GTBA6520506207","token":"74bb0ba8be426d50"}
Request type : POST
我需要形成我的正则表达式提取器。应该是什么参数?我使用以下内容:
Reference name : token
Regular expression : "$token":"(.+?)"
Template: $1$.
示例请求标头:
Request Headers:
Connection: keep-alive
Referer: ****************/
Accept-Language: en-US,en;q=0.5
X-Token: 59d7ff6833495fcc
X-User-Id: R1RCQTY1MjA1MDYyMDc=
DNT: 1
Accept-Encoding: gzip, deflate, br
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: application/json, text/plain, */*
Host: **************
令牌在Jmeter中登录页面的每次登录时都会更改,但对于所有其他页面,令牌保持不变并且不会更改。我该怎么做才能解决这个问题?
Jmeter结果树:
登录页面 - (每个Jmeter运行时令牌更改)
Page 1 Page 2&第3页 - 令牌保持不变。
谢谢
答案 0 :(得分:2)
将JSON Extractor添加为第一个请求的子节点,并按如下方式对其进行配置:
token
$.token
将HTTP Header Manager添加为第二个请求的子级,并将其配置为发送以下标头:
X-Token
,其值为${token}
X-User-Id
,其值为${__base64Encode(GTBA6520506207,)}
您需要安装Custom JMeter Functions插件包才能拥有__base64Encode() function,您可以使用JMeter Plugins Manager安装自定义JMeter功能。
如果由于某种原因您无法使用JMeter插件,则可以使用__groovy() function编码您的用户名
${__groovy('GTBA6520506207'.bytes.encodeBase64() as String,)}
答案 1 :(得分:0)
使用以下表达式, 参考名称:令牌 正则表达式:“令牌”:“(。+?)” 模板: $ 1 $
上面的表达式可以正常工作。 “$ {token}”用于调用加载的令牌值。
您还可以使用JSON Path Extractor完成工作。
JSON路径提取器的表达式,
变量名称:令牌 JSON路径表达式: $ ..令牌 比赛号码: -1 默认值:0
此处$ {token}用于在需要的地方调用令牌的值。