JMeter--关联(正则表达式单个值和多个值)实践
一、什么时候需要关联?
1. 服务器返回的动态变化而且对业务有影响的需要关联。
2. 回放脚本看是否正确,检查下脚本,是否有动态数据影响
3. 一大串字符串,每次请求参数是否有变化
4. 可以找开发问问,接口是开发做的,最清楚了
一、关联
讲关联之前先熟悉一下后置处理器,因为关联取的数据就是请求后的数据。
后置处理器:
后置处理器(Post Processors)负责在请求后进行工作。后置处理器常作为处理响应的数据,后置处理器中的正则表达式提取器常常用于提取动态关联的数据。后置处理器放在请求的子集中。

动态数据关联:
1.在HTTP请求的参数中经常会遇到一些参数的值是服务器的响应中的动态数据,这些数据需要进行关联才能使得每一次请求都能成功地被服务器接受,在JMeter中常用正则表达式或者JSON提取器来获取这些动态数据。
2.正则表示式允许用户从服务器响应中获取数据,作为后置处理器,正则表示式在每个请求执行后再执行。正则表示式提取出来的数据放在变量中,供后续的请求使用。
注意点:
1.取数据 :
从接口的响应中取,要数据,就把该数据括起来 (.*?)
2.不要删多了,
3.千万注意看见post,首先要看请求的数据类型,如果是json类型,要加信息头管理器
4.接口的入参都是有来源的,1手动输入(进去的密码类似于),2从前面的接口的响应中来的(类似于前面新建的学校,然后多出来了id和学校的账号)。
5.报错看请求,看有没有空格,多余的字符串
6.正则表达式一定要放在需要捕捉的页面里面,调试取样器是放在引用的界面的。
7同时取两个数值的时候,引用名称一定要是 id 这很重要。
正则表达式提取器:
添加 》 后置处理器 》 正则表达式提取器

- 名称:该节点的名称,自行定义
- 注释:节点的注释
- Apply to:默认选择Main sample only,从主请求中获取数据
- 要检查的响应字段:响应包含响应行、响应头、body等,选择从主体即可。
- 引用名称:正则取出来的数据放在变量中,变量的名称自己根据实际情况写,比如:token、id等。把值放在变量中,供后续的请求使用。
- 正则表示式:用于解析响应数据的正则表达式。
- 模板:取一个数据的模板$1$,取两个数据的模板$1$$2$。
- 匹配数字(0代表随机):正则取出来的数据可能是多个,0代表随机一个。
- 缺省值:正则取不到数据,要展示的信息。
正则表示式:
- .点:匹配任何单个字符,除了\n\r之外
- +加号:匹配前面的子表示式一次或者多次
- ?问号:当该字符紧跟在任何一个其他限制符(*,+,?)后面时,匹配模式是非贪婪的,非贪婪模式尽可能少地匹配所搜索的字符串
- *星号:匹配前面的子表达式任意次
- ()小括号:将()之间的表示式定义为“组”,并且将匹配这个表示式的字符保存到一个临时区域

举例:要获取token的正则表达式为:”token”:”(.+?)”
如果想获取响应的所有结果使用(.+)即可

二、Jmeter中的关联元件可以帮助我们从服务器响应数据中找到我们需要的数据,把想要的数据提取出来。
- 写了个登录脚本,放回发现登录不成功,然后看了一下请求中的参数,发现post提交的参数中有可疑数据,一排的字母+数字

2. 然后通过抓包看每次登录提交的authenticity_token值都不一样,所以就是这个值需要关联了

查看登录页面源代码要抓取authenticity_token这个值出来

三、正则表达式抓取数据步骤 1.添加正则表达式
2.编写正则表达式

3. 看看正则表达式能否提取出动态的authenticity_token值

提取出来动态的authenticity_token值后,在post协议中把这个值给替换成变量,这样每次提交的时候这个值就会跟着变化了


4.
然后再次回放脚本


浙公网安备 33010602011771号