Jmeter获取令牌并使用它。
1.首先你需要确认你需要使用的令牌是从哪个接口返回的。如果在登录步骤中使用了令牌,那么在登录之前必须有其他接口可以访问,否则没有令牌登录将会失败。因此,在登录之前,请使用抓包工具或F12函数检查界面访问。我的情况是登录时需要使用token。用fiddler抢到包后,发现在Login的接口访问之前有一个registerDevice的接口访问。看这个界面的返回,发现此时已经有给token的信息了。
2.检查令牌提交的位置。网上有很多文章都是这样处理的,因为令牌在请求头信息里,但我的情况不是这样。我用抓包工具检查令牌信息,找到这个登录的界面。当发送请求时,我将令牌作为参数发送。
3.所以找出你的令牌是在哪里提交的。如果是在请求头中,那么你需要添加一个HTTP头管理器(大多数在线文章都是这样);如果和我一样是在请求中提交的,加一个HTTP请求默认值就好了,这是两个不同的配置组件。
4.在我的例子中,我只想添加请求默认值。当添加请求默认值时,名称应该用抓取包时捕获的参数名来填充(参见图2)。值为jmeter以获取变量$ {用户定义的变量名}的书写方法。“自定义变量名称”可以是您自己定义的任何名称。比如下图,我为token定义了X的名字(有很多token,newtoken,accesstoken等。在网上,和真实的代币混在一起的人就糊涂了),然后按照jmeter的写法把它的值写成${x}。请注意,在下图中,默认请求值的名称需要与实际参数的名称相同。
5.然后添加一个正则表达式提取器,一定要添加在请求的下面(请求的下一级),这样请求的范围就覆盖了。
6.正则表达式用双引号写在冒号的左右两边。左边引号中的值应该与该请求返回的内容中的令牌名称一致。比如在我的请求返回的内容中,令牌的参数叫做deviceToken(见图1),固定的(。+?)就好。所以我填正则表达式的时候,这里填的是“deviceToken”:(。+?)”,这里的引用名称需要和刚才命名时的名称一致。我之前叫X,这里的引用名也应该是X. Template,写固定的$1$。所以我的正则表达式提取器,内容如下。
7.运行并检查结果,发现接口已连接。
我只是一个菜鸟,有些用法和理解甚至可能是错误的,但至少我解决了自己的问题,这是一个学习的过程。每个程序的情况不一样,需要根据自己的情况添加相应的配置组件才能达到目的。