首页 > 代码库 > JMeter学习-009-JMeter 后置处理器实例之 - 正则表达式提取器(二)多参数获取

JMeter学习-009-JMeter 后置处理器实例之 - 正则表达式提取器(二)多参数获取

前文简述了通过后置处理器 - 正则表达式提取器 获取 HTTP请求 响应结果中的特定数据,未看过的亲,敬请参阅 JMeter学习-008-JMeter 后置处理器实例之 - 正则表达式提取器(一)

此文主要对正则表达式提取器的 正则表达式、模板、匹配数字,三者的关系,做进一步的讲解。

截取商品列表响应结果数据中的一段商品数据如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
    "sysNo": "2142717",
    "skuid": "487626525247",
    "productID": "101-006-72958",
    "productTitle": "苹果(Apple)iPhone 6 Plus (A1524) 16GB 金色 移动联通电信4G手机",
    "price": "556600",
    "activePrice": "",
    "marketprice": "608800",
    "promotionDesc": "A1524、A1586为三网通版,支持移动\/联通\/电信4G\/3G\/2G。找水货?找翻新?没有!易迅网为国行正品代言!!",
    "manufacturerCode": "49",
    "manufacturerName": "苹果(Apple)",
    "evaluationNum": "1717",
    "gradeNum": "48",
    "onlineQty": "597",
    "shippingday": "0t0",
    "gift": 0,
    "promotionType": "0",
    "attribute": "20000000TD-SC<strong>(为保持美观,此行数据有所删除,不影响此文讲解,请知悉!)</strong>5.5寸三网通版",
    "saleNum": "454",
    "productTypeMasterid": "0",
    "areaCode": "1",
    "classid": "203320",
    "tag": "超薄手机 大屏手机 待机时间长 高清屏 女神手机 拍照功能强 商务手机 外观漂亮 指纹识别 主流潮机",
    "goodsUrl": "http:\/\/item.yixun.com\/item-2142717.html",
    "picUrl": "http:\/\/img3.wgimg.com\/qqbuy\/2295220799\/item-00000000000000000000007188CE4A3F.0.jpg\/200?55DAE367",
    "reachable": "0"
},

参照上述商品信息数据,假定我们需要获取的是商品的系统编号、商品价格,那么我们改如何写呢?对应上述信息获取商品系统编号、商品销售价格,最终的正则表达式如下所示:

单独获取商品系统编号:

技术分享

单独获取商品销售价格:

技术分享

执行结果如下所示:

1
2
3
4
5
6
7
8
price=556600
price_g=1
price_g0="price":"556600","
price_g1=556600
sysNo=2142717
sysNo_g=1
sysNo_g0="sysNo":"2142717","
sysNo_g1=2142717

 

在前文的讲述中,正则表达式提取器的模板是匹配正则表达式提取式的控制模板。例如:模板 技术分享1 中的数字 1 代表取第一个正则提取式的内容,当为0时,为整个正则表达式完整匹配项。那么我们就可以通过模板控制我们选取的提取式,以获取相应的内容,进行相应的后续操作。通过模板控制,单独获取商品系统编号、销售价格的正则表达式提取配置如下所示:

混合单取商品系统编号:

技术分享

混合单取商品销售价格:

技术分享

执行结果如下所示:

1
2
3
4
5
6
7
8
9
10
single_price=556600
single_price_g=2
single_price_g0=sysNo":"2142717","skuid":"487626525247","productID":"101-006-72958","productTitle":"苹果(Apple)iPhone 6 Plus (A1524) 16GB 金色 移动联通电信4G手机","price":"556600","
single_price_g1=2142717
single_price_g2=556600
single_sysNo=2142717
single_sysNo_g=2
single_sysNo_g0=sysNo":"2142717","skuid":"487626525247","productID":"101-006-72958","productTitle":"苹果(Apple)iPhone 6 Plus (A1524) 16GB 金色 移动联通电信4G手机","price":"556600","
single_sysNo_g1=2142717
single_sysNo_g2=556600

 

经过上述的讲解及演示,细心的小主可能已经发现了,在提取相关联的数据时,通过单独提取的方式非常的不方便,而且在数量多的时候,难免出现配置数据不对应的情况,造成所取的关联数据并非关联数据。那么针对此种情况,我们改如何处理呢?通过 上篇文章 及本文前面的讲解,我们知道,既然可以通过模板控制提取内容的选取,那是否可将相关联的需提取的内容同时在一个正则表达式提取器中完成呢?答案是可以的,仅需在引用名称、模板、匹配数字、缺省值 进行相应的配置即可,同时以英文半角字符 “,” 分隔即可。下面就以同时获取系统编号和销售价格为例进行演示:

正则提取器配置如下所示:

技术分享

执行结果如下所示:

1
2
3
4
5
goodInfo=2142711,558800
goodInfo_g=2
goodInfo_g0=sysNo":"2142711","skuid":"487626066110","productID":"101-006-69384","productTitle":"苹果(Apple)iPhone 6 Plus (A1524) 16GB 深空灰色 移动联通电信4G手机","price":"558800","
goodInfo_g1=2142711
goodInfo_g2=558800

 

附录(1)- JMeter测试脚本:

技术分享 JMeter - 后置处理器/正则表达式提取器 实例脚本

附录(2)- HTTP请求响应结果:

技术分享 HTTP请求响应结果数据

 

至此, JMeter学习-009-JMeter 后置处理器实例之 - 正则表达式提取器(二) 顺利完结,希望此文能够给初学 JMeter 的您一份参考。

最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^

JMeter学习-009-JMeter 后置处理器实例之 - 正则表达式提取器(二)多参数获取