正则表达式提取器

配置项

Apply to:

与响应断言中用法一致,不再赘述。

Field to check:

  • Body
Response Body,比如HTTP响应报文的实体主体,不包含状态行与首部。
  • Body(unescaped)
Response Body(转换了转义字符),对HTTP响应报文的实体主体中的所有HTML转义字符进行了转
义处理。由于转义时没有参照上下文,在处理时可能会出错,并且开启此选项会严重影响性能,故不建
议使用。
  • Body as a Document
通过Apache Tika从各种类型的文档中提取文本。此选项开启也会严重影响性能,谨慎使用。
  • Response Headers
一般用于HTTP请求,HTTP响应报文中的首部。
  • Request Headers
一般用于HTTP请求,HTTP请求报文中的首部。
  • URL
一般用于HTTP请求。HTTP请求报文中的请求URL地址(未开启重定向功能);若开启了重定向功能,
则包含原始请求中的请求URL地址与重定向后的URL地址。
比如前面访问新浪的例子,开启了重定向后,则包括:http://www.sina.com/,
http://www.sina.com.cn/和https://www.sina.com.cn/三个URL地址。
  • Response code
一般用于HTTP协议,指的是HTTP响应报文中的状态码,比如200、301、404等。
  • Response Message 
一般用于HTTP协议,指的是HTTP响应报文中的原因短语,比如OK、Moved Permanently、Not
Found等。

 

Name of created variable:

用于存储结果的JMeter变量的名称。变量名称可以自定义。

Regular Expression:

用于解析响应数据的正则表达式。使用正则表达式中的()来捕获响应字符串。
可以使用一组或多组()来捕获一个或多个字符串。这样的分组称为捕获组,
每个捕获组都有一个编号与之对应,以方便引用捕获组匹配的内容。若有多个捕获组,编号规则为:
从左至右,按照“(”出现的顺序,从1开始依次递增进行编号:1,2,3,... ,n
还有一个额外编号为0的捕获组,用于表示匹配到的整个正则表达式字符串。
比如:
正则表达式: <input type=(.*?) name=(.*?) value=(.*?)>
捕获组编号: 1 2 3 
模板为: $1$
匹配后各捕获组对应的内容如下:

msg=hidden
msg_g=3
msg_g0=<input type=hidden name=bdorz_come value=1>
msg_g1=hidden
msg_g2=bdorz_come
msg_g3=1

如果上述中的模板为 :$1$--$2$--$3$(模板中间可以用分割符分开,这样看起来会比较清晰)

那么最后msg=hidden--bdorz_come--1

如果是$0$,那么就是匹配所有:msg=<input type=hidden name=bdorz_come value=1>

Template($i$ where i is capturing group number,starts at 1):

设置捕获到的字符串以怎样的格式保存到存储结果的JMeter变量中。
在此项中,可以用$1$表示引用捕获组1中的内容,$2$表示引用捕获组2中的内容,... ,$n$表示
引用捕获组n中的内容,
$0$表示引用正则表达式匹配后的整个字符串。
注意除了使用$n$引用捕获组的内容外,还可以加入需要的字符,将匹配的内容按照某种格式保存。

Match No.(0 for Random):

匹配序号。从匹配的结果中怎样挑选匹配项。
若正则表达式每个捕获组有多个匹配项。
则1表示第一个匹配项,2表示第二个匹配项,... ,依次类推;
0表示从多个匹配项中随机选择一个;
-i(i=1,2,3,... ,N,-i即负整数)表示引用所有的匹配项。
若有多个捕获组,并且引用每个捕获组所有的匹配项,则可以看是一个二维数组。
假设,捕获组为g1,g2,g3,... ,gn;每个捕获组匹配项编号为1,2,3,... ,m;
保存结果的JMeter变量为refName,则:
refName_m_gn表示第n个捕获组中的第m个匹配项。
比如:
refName_1_g1 表示第1个捕获组中的第1个匹配项;
refName_2_g1 表示第1个捕获组中的第2个匹配项;
...
refName_1_g2 表示第2个捕获组中的第1个匹配项;
refName_2_g2 表示第2个捕获组中的第2个匹配项;
...

Default Value:

如果正则表达式没有匹配到内容,则保存结果的JMeter变量将设置为默认值,这样会对调试JMeter
测试带来便利。如果没有提供默认值,则很难判断正则表达式是否匹配失败,或者RE元素是否未处理
或者是否使用了错误的变量。
但是,如果您有多个设置相同变量的测试元素,那么如果表达式不匹配,您可能希望保持变量不变。在
这种情况下,请在调试完成后删除默认值。

Use empty default value:

如果选中该复选框则默认值为空,则JMeter会将保存结果的JMeter变量设置为空字符串。

应用案例

案例说明

业务操作步骤:
1.登录ECshop后台管理系统;
2.设置查询条件(比如按商品品牌)搜索商品;
3.在返回的查询结果集中选择第一个商品删除。
这里每一步骤对应一个HTTP请求,在第二个请求中每次返回的查询结果集不一样(因为每执行一次会
删除一个商品),故向第三个请求传递的商品编号参数不能写死,需要从第二个请求对应的响应数据中
提取出来。

操作步骤 

这里对第二个步骤一些细节进行说明:
在第二个请求返回的响应数据中观察:
...
23)\">8<\/span><\/td>\r\n <td align=\"center\">\r\n <a
href=\"..\/goods.php?id=23\" target=\"_blank\" title=\"\u67e5\u770b\"><img
src=\"images\/icon_view.gif\" width=\"16\" height=\"16\" border=\"0\"
...
发
现返回的goods_id的左边界为goods.php?id=,右边界为\",但考虑到.与?以及\为元字符,故需
要转义,则正则表达式可以设置为:
goods\.php\?id=(\d+)\\"


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

謹言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值