Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)

一.关联-XPath提取器(关联:从上一条请求中获取的到的数据,使用在下一个请求中)

  • 使用场景:接口返回报文为HTML或xml格式时,使用xpath提取 器

  • 位置:线程组-添加-后置处理器-xpath提取器
    Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第1张图片

  • 配置XPath提取器
    xml parsing option栏中勾选“use tidy”和“quiet
    引用名称:接收返回值数据的变量名称
    xpath query:xpath表达式——格式://标题
    匹配数字:0代表随机;-1代表所有
    缺省值:没有查到对应的数据时,显示的内容
    Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第2张图片
    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在百度引擎查询

  • 清华大学官网请求接口
    Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第3张图片

  • 添加“xpath”元件并且配置:变量_//title
    Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第4张图片

  • 百度搜索接口引用变量
    Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第5张图片
    二.关联-json提取器

  • 使用场景:接口返回报文格式为json

  • 位置:HTTP请求-添加-后置处理器-json提取器
    Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第6张图片

  • json配置
    引用名称:接收返回值数据的变量名称
    json path expressions:jsonpath表达式——格式:$…变量字段名称
    匹配数字:0代表随机;-1代表所有
    缺省值:没有查到对应的数据时,显示的内容

  • 案例
    退保百分比响应报文中获取客户工号(agentcode)
    数据库查询该客户信息

  • 百分比请求接口
    Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第7张图片

  • 百分比响应接口(获取agentcode字段信息)
    Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第8张图片

  • 添加“json提取器”并配置变量为:$…agentcode
    Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第9张图片

  • JDBC请求中引用变量
    Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第10张图片

  • 查看结果
    Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第11张图片

备注:json中包含数组时,变量设置格式:$…字段1.字段2.字段3[0].变量字段(路径方式与postman一样)

报文格式如下:Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第12张图片
添加json提取器并设置变量:$…transResponse.extensionObject.QueryNoteDetailResult[6].mainProductName
Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第13张图片

下一个请求接口中关联:“agentNum” : “${mainProductName}”,
Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第14张图片

三.关联-正则表达式提取器
正则表达式提取器:允许用户从服务器的响应中通过使用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):“()”表示提取字符串中的部分值,标识提取内容的开始与结束,如“(.*?)"(请不要使用“||”,除非你需要匹配这个字符)。
Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第15张图片
备注:1.关联字段以数组形式存在时,关联其中某一个可以通过修改”匹配数字“,如下图,”匹配数字写101“
Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第16张图片
Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第17张图片

2.上述举例需要在请求接口添加”bean shell 后置处理器“先Unicode中文转换
3.匹配数字:”0“代表随机;”-1“代表所有;
Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第18张图片

-下一个请求中引用关联
引用格式${引用名称}
Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第19张图片
备注:正则表达式提取器和XPath提取器 的区别:
①正则表达式提取器可以用于对页面任何文本的提取,提取的内容是根据正则表达式在页面内容中进行文本匹配;
②XPath提取器 则可以提取返回任意元素的任意属性,若提取某元素的属性值,一般使用XPath提取器
③如果需要提取的文本在页面上的位置不固定或者不是元素的属性,建议使用正则表达式提取器。

四.跨线程组关联(多个线程组间数据关联)
案例:下图中“线程组-1”的变量关联到“线程组-2”中
Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第20张图片

  • 将原来的参数提升作用域,使用函数:SetProperty
  • 设置SetProperty
    属性名称:提升作用域的变量新名称
    value of Property:需要提升作用域的变量值(需要关联的变量:${phoneNo})
    Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第21张图片
  • “线程组-1”中添加一个新的取样器:bean shell取样器
  • 将设置好的SetProperty函数【KaTeX parse error: Expected group after '_' at position 2: {_̲_setProperty(mo…{phoneNO},)}】粘贴至bean shell取样器中
    Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第22张图片
  • 设置property函数
    属性名称;新的变量名称(即SetProperty函数设置时的属性名称)
    Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第23张图片
  • 将设置好的property函数【${__property(mobile,)}】粘贴至“线程组-2”中
    Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第24张图片
  • 设置线程组请求的顺序
    线程组-调度器-填写启动时间和延迟
    Jmeter关联(含跨线程组关联)-后置处理器xpath、json、正则表达式(8)_第25张图片

你可能感兴趣的:(Jmeter)