JMeter处理responses——正则表达式提取器 Regular Expression Extractor
先贴图吧,一张图胜似千言万语啊。
1.HTTP Request
,参数a是随意写的,没有任何意义。请求zol首页后,获取其网站title
2.添加正则提取器。
在HTTP Request
上右键Add——Post Processors——Regular Expression Extractor
Reference Name
:引用名称,根据正则提取到的值在其他地方使用${RefName} 去获取 Regular Expression
:正则表达式,如果加上小括号表示只获取符合小括号内的部分
Template:模板,具体意义还未找到明确定义。但是,如果只想获取title
标签内的字符,这里要写$1$;如果想获取包括title标签的字符,这里要写$0$。若正则表达式中有多个正则表达式时,$0$表示第一个正则,即小括号里的部分,$1$表示第二个正则,依次类推。
Match No.:当有多个匹配字符串的时候,获取指定位置的字符串。0为第一个匹配的字符串
Default Values:默认值。
3.添加第二个HTTP Request,增加一个参数p,值为${titleName},即上面正则获取到的值
4.运行,查看结果。为了调试方便,在第一个HTTP Request上增加一个Debug(Add——Post Processors——Debug PostProcessor)
。可以看到,只获得title标签内部的字符。
总结一下,正则还是比较强大的,但凡是字符串都可以拿正则来解析,具体正则语法可以搜索一下。至于跟json解析器的对比,json用起来比较方便,key-value的形式,可以直接拿来就用。
<div id='Tem'></div>
2016-01-15 更新
关于Template,如果Regular Expression中,就写了一个简单的正则表达式,比如说,获取返回网页中的title
Regula Expression填写<title>.*</title>
,Template只能填写$0$,因为根据这个正则只能匹配一次,如果匹配出多个结果,则可以根据Match No. 来判断获取哪个结果(0为随机)。这里返回的结果只能是 <title>中关村在线 - 大中华区专业IT网站 - The valuable and professional IT business website in Greater China</title>
正常情况下,我们获取的结果并不想要<title>
标签,则修改reg为<title>(.*)</title>
,这样会根据这个正则匹配两次,一次是包含title标签的结果,第二次是仅括号里的。这时如果Template填写$0$则是包含title标签的,即整个正则匹配的结果,如果填写$1$,则是不包含title标签的,即仅括号内正则匹配的结果。
另外一种情况呢,比较复杂的情况。比如说,获取网页中的keywords。页面中的html段是这样的
<meta charset="gbk" />
<meta name="keywords" content="中关村在线,中关村,电脑报价,新闻,行情,导购,装机,攒机,评测,新品,软件,下载,产品,报价,经销商,二手,数码,手机,数码相机,数码摄像机,DC,DV,MP3,MP4,论坛,硬件论坛" />
<meta name="description" content="中国领先的IT信息与商务门户, 包括新闻, 商城, 硬件, 下载, 游戏, 手机, 评测等40个大型频道,每天发布大量各类产品促销信息及文章专题,是IT行业的厂商, 经销商, IT产品, 解决方案的提供场所" />
如果我的reg是这样写的 <meta name=".*" content=".*" />
,然后会获取到多个结果,Match No. 填写1,即可得到keywords的标签段,但是只想获取中关村在线...这段汉字,那么修改reg为 <meta name="(.*)" content="(.*)" />
,这样的对于该标签段会有三个匹配,0:整个reg去匹配,即整个标签段,1:仅匹配第一个正则段,即keywords,2:仅匹配第二个正则段,即中关村在线...这段汉字。
PS:调试正则,添加Debug后置处理器,在同一级别的Post Processors,debug pro必须放在其他pro后面,否则无法拦截到pro的参数。
PPS:以上,仅做举例使用。如果需要获取keywords,reg只需要<meta name="keywords" content="(.*)" />
即可。
参考:http://www.cnblogs.com/zhuque/archive/2012/11/19/2777399.html
本文链接:http://bigerhead.com/2015/09/154.html 转载请注明出处。