JMeter - 提取器

概念: 当请求之间有依赖关系,比如一个请求的入参是另一个请求返回的数据,这时候就需要用到关联处理

JMeter 中常用的关联方法:

- 正则表达式提取器
- XPath 提取器
- JSON  提取器


正则表达式知识储备:
案例,用正则表达式从以下文本中提取出,城市区号、地区号、个人号:
021-1324-4454
045-4564-4421
078-1234-7784
041-2222-6696
012-3333-8897
056-7891-1142

regex: (.*?)-(.*?)-(.*?)\n

.: 匹配除换行符(\n、\r)之外的任何单个字符
*:零次或多次
+:一次或多次
?:代表非贪婪匹配,可以匹配多组数据,找到第一组数据的右边界即停止,接招找下以一组的左边界
():匹配分组

正则表达式提取器

位置:HTTP请求 -> 添加 -> 后置处理器 -> 正则表达式处理器

正则表达式提取面板:


模板: 表示解析出一行数据的第几个()的值,结合上面的电话号码,$1$ 代表城市区号,$2$代表地区号码,$0 代表匹配到的整行数据

匹配数字:正则表达式匹配数据的结果可以看做一个数组,表示如何取值,0代表随机取值,正数n则表示取第n个值(比如1代表取第一个值),负数则表示提取所有符合条件的值

引用方法:${引用名称}

下面来一个案例:

需求:从上一个请求的响应中提取返回的第5个地址,并访问百度传参

正则表达式提取器:

成功取到第五个地址:

Debug 取样器的结果

发现${address_5} 和${address_5_g1} 的结果一样

因此在引用的时候用=${address_5_g1} 也是可以的

--TODO
当模板中有多个$$的情况


XPATH提取器

位置:HTTP请求 -> 添加 -> 后置处理器 -> XPATH提取器

面板如下:

- Use Tidy:
  - 当需要处理的页面是HTML格式时,必须选中该选项
  - 当需要处理的页面是XML或XHTML格式时,取消选中该选项
- XPath Query: 用于提取值的XPath表达式
- 匹配数字:当提取的值有多个时,0表示随机,-1表示所有结果,1表示第一个值

JSON 提取器

请求天气的接口:www.weather.com.cn/data/sk/101010100.html

位置和XPath提取器位置一样

Json Path expressions :可以在响应结果中测试下能否取到值:

当遇到的JSON数据中有列表时怎么提取?(索引从0开始)

posted @ 2021-12-29 11:40  chuangzhou  阅读(314)  评论(0编辑  收藏  举报