一.关联-XPath提取器(关联:从上一条请求中获取的到的数据,使用在下一个请求中)
-
使用场景:接口返回报文为HTML或xml格式时,使用xpath提取 器
-
位置:线程组-添加-后置处理器-xpath提取器
-
配置XPath提取器
xml parsing option栏中勾选“use tidy”和“quiet
引用名称:接收返回值数据的变量名称
xpath query:xpath表达式——格式://标题
匹配数字:0代表随机;-1代表所有
缺省值:没有查到对应的数据时,显示的内容
APPly to:作用范围(返回内容的断言范围)
Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器
Main sample only:仅作用于父节点的取样器
Sub-samples only:仅作用于子节点的取样器
JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)
XML Parsing Options:要解析的XML参数
Use Tidy:当需要处理的返回报文是HTML格式时,必须选中该选项;如果是XML或XHTML格式(例如RSS返回),则取消选中;
Quiet表示只显示需要的HTML页面,Report errors表示显示响应报错,Show warnings表示显示警告;
Use Namespaces:如果启用该选项,后续的XML解析器将使用命名空间来分辨;
Validate XML:根据页面元素模式进行检查解析;
Ignore Whitespace:忽略空白内容;
Fetch external DTDs:如果选中该项,外部将使用DTD规则来获取页面内容;
Return entire XPath fragment of text content:返回文本内容的整个XPath片段;
Reference Name:存放提取出的值的参数。
XPath Query:用于提取值的XPath表达式://标题 如://title
Default Value:参数的默认值。 -
案例
登录“清华大学官网”获取title;
获取的title在百度引擎查询 -
清华大学官网请求接口
-
添加“xpath”元件并且配置:变量_//title
-
百度搜索接口引用变量
二.关联-json提取器 -
使用场景:接口返回报文格式为json
-
位置:HTTP请求-添加-后置处理器-json提取器
-
json配置
引用名称:接收返回值数据的变量名称
json path expressions:jsonpath表达式——格式:$…变量字段名称
匹配数字:0代表随机;-1代表所有
缺省值:没有查到对应的数据时,显示的内容 -
案例
退保百分比响应报文中获取客户工号(agentcode)
数据库查询该客户信息 -
百分比请求接口
-
百分比响应接口(获取agentcode字段信息)
-
添加“json提取器”并配置变量为:$…agentcode
-
JDBC请求中引用变量
-
查看结果
备注:json中包含数组时,变量设置格式:$…字段1.字段2.字段3[0].变量字段(路径方式与postman一样)
报文格式如下:
添加json提取器并设置变量:$…transResponse.extensionObject.QueryNoteDetailResult[6].mainProductName
下一个请求接口中关联:“agentNum” : “${mainProductName}”,
三.关联-正则表达式提取器
正则表达式提取器:允许用户从服务器的响应中通过使用perl的正则表达式提取值。该元素会作用在指定范围取样器,用正则表达式提取所需值,生成模板字符串,并将结果存储到给定的变量名中。
- 应用场景:所有响应报文格式
- 位置:HTTP请求-添加-后置处理器-正则表达式
APPly to:作用范围(返回内容的断言范围)
Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器
Main sample only:仅作用于父节点的取样器
Sub-samples only:仅作用于子节点的取样器
JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)
要检查的响应字段:需要检查的响应报文的范围
主体:响应报文的主体
Body(unescaped):主体,响应的主体内容且替换了所有的html转义符,html转义符处理时不考虑上下文,因此可能有不正确的转换,不太建议使用
Body as a Document:从不同类型的文件中提取文本,注意这个选项比较影响性能
Response Headers:响应信息头
Request Headers:请求信息头
URL:统一资源定位符
引用名称(Reference Name):Jmeter变量的名称,存储提取的结果,即下个请求需要引用的值、字段、变量名
正则表达式(Regular Expression):“()”表示提取字符串中的部分值,标识提取内容的开始与结束,如“(.*?)"(请不要使用“||”,除非你需要匹配这个字符)。
备注:1.关联字段以数组形式存在时,关联其中某一个可以通过修改”匹配数字“,如下图,”匹配数字写101“
2.上述举例需要在请求接口添加”bean shell 后置处理器“先Unicode中文转换
3.匹配数字:”0“代表随机;”-1“代表所有;
-下一个请求中引用关联
引用格式${引用名称}
备注:正则表达式提取器和XPath提取器 的区别:
①正则表达式提取器可以用于对页面任何文本的提取,提取的内容是根据正则表达式在页面内容中进行文本匹配;
②XPath提取器 则可以提取返回任意元素的任意属性,若提取某元素的属性值,一般使用XPath提取器
③如果需要提取的文本在页面上的位置不固定或者不是元素的属性,建议使用正则表达式提取器。
四.跨线程组关联(多个线程组间数据关联)
案例:下图中“线程组-1”的变量关联到“线程组-2”中
- 将原来的参数提升作用域,使用函数:SetProperty
- 设置SetProperty
属性名称:提升作用域的变量新名称
value of Property:需要提升作用域的变量值(需要关联的变量:${phoneNo})
- “线程组-1”中添加一个新的取样器:bean shell取样器
- 将设置好的SetProperty函数【KaTeX parse error: Expected group after '_' at position 2: {_̲_setProperty(mo…{phoneNO},)}】粘贴至bean shell取样器中
- 设置property函数
属性名称;新的变量名称(即SetProperty函数设置时的属性名称)
- 将设置好的property函数【${__property(mobile,)}】粘贴至“线程组-2”中
- 设置线程组请求的顺序
线程组-调度器-填写启动时间和延迟