从上一步操作中获取需要的值,传递给下一步操作中进行引用,形成自动关联,而不是
每次操作都去手动修改关联的值。常见的场景有SessionID、Session Token值的获取。
正则表达式(Regular Expression):使用正则表达式解析响应结果,“()”表示提取字
符串中的部分值,请不要使用“||”,除非你本身需要匹配这个字符。
常用的正则表达式操作符:
操作符
说明
实例
.
匹配除“\r\n”之外的任何单个字符。
[]
字符集,对单个字符给出范围
[abc] 表示非a、b、c,[a-z]表示a-z的单个字符
[^ ]
非字符集,对单个字符给出排除范围
[^abc] 表示非a或b或c的单个字符
*
前一个字符零次或无限次扩展
abc* 表示ab、abc、abcc、abccc等
+
前一个字符1次或无限次扩展
abc+ 表示abc、abcc、abccc等
?
前一个字符0次或1次扩展
abc? 表示ab、abc
|
左右表达式的任意一个
abc|def 表示abc、def
{m}
扩展前一个字符m次
ab{2}c 表示abbc
{m,n}
扩展前一个字符m到n次
ab{1,2}c 表示abc、abbc
^
匹配字符串开头
^abc 表示abc且在一个字符串的开头
$
匹配字符串结尾
abc$ 表示abc且在一个字符串的结尾
()
分组标记内部只能使用|操作符
(abc) 表示abc,(abc|def)表示abc、def
\d
数字,等价于0-9
\w
单词字符,等价于[a-z0-9A-Z_]
常用组合:
.*具有贪婪的性质,匹配到不能匹配为止,最大匹配原则。
+或*后跟?表示非贪婪匹配,即尽可能少的匹配,最小匹配原则。
.*? 表示在能匹配成功的前提下尽可能少的匹配,最小匹配原则。
Name:组件的名字,可以自定义
Comments:注释
Apply to:一般保持默认选择Main sample only即可
Field to check:要检查的响应字段,比较常用的是Body
Name of created variable:引用名称,即变量名,将获取到的值存储在这个变量中
Regular Expression:正则表达式,根据要抓取的内容编写
Template:模板,$1$表示第一个正则表达式,如果有2个模板,则填入$1$$2$
Match No.(0 for Random):匹配数字(0代表随机),一般填1,表示第一个,0表示随机,-1表示全部
(此时提取结果是一个数组,如果引用名称是user,也可以通过${user_1}的方式来取第1个匹配的内容)
Default Value:缺省值,没匹配到就使用该值,如填入一个Test
工作场景:有两个接口,分别可以获取到城市代码和城市天气,查询城市天气的接口需要将
获取到的城市代码作为参数传入。
查询城市代码接口:http://toy1.weather.com.cn/search?cityname=shanghai
查询城市天气接口:http://www.weather.com.cn/data/cityinfo/101020100.html
接下来,我们需要使用正则表达式提取器来实现两个接口的关联,先抓取到城市代码存储到
一个变量中,然后在查询城市天气接口中引用该变量。
在Jmeter中建立http请求,配置好查询城市代码接口,添加查看结果树。
添加正则表达式提取器,抓取需要的参数。
添加查询城市天气接口,城市代码引用上一步提取的参数,查看响应结果。
对于需要从接口返回为JSON的结果中提取内容,然后作为变量在不同的请求中传递,JSON Path Extractor
提取器可以说是非常好用。对于JSONPath不太熟悉的同学,建议在使用该组件前先去官网学习一下相关内容。
JSONPath官网:https://goessner.net/articles/JsonPath/
先看一下JSONPath语法与其对应的XPath概述和比较。
XPath
JSON路径
描述
/
$
根对象/元素
.
@
当前对象/元素
/
. 或者 []
子运算符
..
不适用
父运算符
//
..
递归下降。JSONPath 从 E4X 借用了此语法。
*
*
通配符。所有对象/元素,无论其名称。
@
不适用
属性访问。JSON 结构没有属性。
[]
[]
下标运算符。XPath 使用它来迭代元素集合和谓词。在 Javascript 和 JSON 中,它是本机数组运算符。
|
[,]
XPath 中的联合运算符导致节点集的组合。JSONPath 允许将备用名称或数组索引作为一个集合。
不适用
[开始:结束:步骤]
从 ES4 借来的数组切片运算符。
[]
?()
应用过滤器(脚本)表达式。
不适用
()
脚本表达式,使用底层脚本引擎。
()
不适用
在 Xpath 中分组
在jmeter里使用此组件,需要安装对应的JMeterPlugins-ExtrasLibs插件。下载完成,将
jar包放入jmeter安装目录lib\ext中,然后重启jmeter。
链接: https://pan.baidu.com/s/1vh9IL9tgwDsSYl2dShgbsw
提取码: 7kgh
Destination Variable Name:要存储的变量名称
JSONPath Expression:JSON表达式
Default Value:缺省值,未取到结果使用该值
1.当返回值为JSON时,JSON表达式为 $.userSession.sessionId
{
"userSession": {
"businessCode": "900000",
"createTime": "2018-05-25 03:24:17",
"userCode": "29feaa3c98014e02bec16c6f448a6459",
"userName": "lip-vpn",
"sessionId": "10a4cee035d044d8b2f25e2cebb2843e"
}
}
在jmeter中添加JSON Path Extractor,然后用结果树查看输出,配置如下:
2.当返回值为数组时,需要加上数组的位置,JSON表达式为 $.userSession[0].sessionId
{
"userSession": [
{
"businessCode": "900000",
"createTime": "2018-05-25 03:24:17",
"userCode": "29feaa3c98014e02bec16c6f448a6459",
"userName": "lip-vpn",
"sessionId": "10a4cee035d044d8b2f25e2cebb2843e"
}
]
}
在jmeter中添加JSON Path Extractor,然后用结果树查看输出,配置如下:
手机扫一扫
移动阅读更方便
你可能感兴趣的文章