6.2 后置处理器/提取器
1 正则表达式提取器
正则表达式提取器,由正则表达式来得到所需要的内容。通过右键点击菜单,选择“添加->后置处理器->正则表达式提取器”而获得。其界面如图33所示。
图33 正则表达式提取器
- Apply to:作用范围,返回内容的断言范围。
Ø Main sample and sub-samples:作用于主节点的取样器及对应子节点的取样器。
Ø Main sample only:仅作用于主节点的取样器。
Ø Sub-samples only:仅作用于子节点的取样器。
Ø JMeter Variable:作用于JMeter变量(输入框内可输入JMeter的变量名称),从指定变量值中提取需要的值。注意输入的是变量名(var),而不是变量值(${var})。
- 要检查的响应字段。
Ø 主体:响应报文的主体,这个选项最为常用。
Ø Body(unescaped):主体,是替换了所有的HTML转义符的响应主体内容,注意HTML转义符在处理的时候不考虑上下文,因此可能有不正确的转换,所以不太建议使用。
Ø Body as a Document:从不同类型的文件中提取文本,注意这个选项会影响性能,也不太建议使用。
Ø 信息头:响应报文的信息头(英文Response Headers,中文翻译有误)。
Ø Request Headers:请求报文的信息头。
Ø URL:请求的URL。
Ø 响应代码:响应的状态码,比如200、404、403等。
Ø 响应信息:响应短语。
- 引用名称。正则表达式提取器获取到数据存储的变量名。比如:token,将提取到的结果存入到参数为token的变量中,通过${token}获得其值。
- 正则表达式:使用的正则表达式。正则表达式的基本使用方法可参考官方文档,在本书中不做更详细地介绍。我在工作中用的做多的是(.*?)。
- 模板(Template):正则表达式的提取模式。如果正则表达式有n个提取结果,则结果模板为12...n,表示把解析到的第几个值赋给变量。
- 匹配数字(Match No):正则表达式匹配数据的结果可以看作是一个数组,表示如何取值。
Ø 0:表示随机(默认值);
Ø负数:表示提取所有结果,它们将被命名为<变量名>_N(其中N从1到结果数);
Ø N:表示提取第N个结果。如果此N大于匹配数量,则不返回任何内容。将使用默认值。
- 缺省值:匹配失败时候的默认值;通常用于后续的调试,比如:Null等。
结合第3.2-1节和第4.2节,可以看到,如果正则表达式中参数仅m个参数(m为大于1的整数),引用名称为var。
- var:提取到的字符串,如果匹配的个数多于一次,这里取默认值。
- var _n:第n次匹配到的字符串(n为大于1的整数)。如果总共就匹配到一个,没有这个变量。
- var_n_g:第n次匹配到的字符串个数。
- var_n_g0:包含var _n(或var)正则表达式的字符串,其中的匹配部分用匹配到的字符串替换。
- var_n_ g1:匹配到的字符串。
- var_matchNr:匹配到的个数。
- var_n_ g1:匹配到的第一个字符串。
- var_n_ g2:匹配到的第一个字符串。
- ......。
- var_n_ gm:匹配到的第m个字符串。
我们可以通过{var}、{var _n}、{var_n_g}、{var_n_g0}、{var_n_g1}、hellip;. 、{var_n_gm}、${name_matchNr}来获得这些值。
2 边界提取器
边界提取器,由左右边界来得到所需要的内容。通过右键点击菜单,选择“添加->后置处理器->正则表达式提取器”而获得。其界面如图34所示。
图34 边界提取器
- Apply to:同正则表达式提取器中对应的字段。
- 要检查的响应字段同正则表达式提取器的字段。
- 引用名称。边界提取器获取到数据存储的变量名。
- 左边界:要提取字符串的左边的字符串。
- 右边界:要提取字符串的右边的字符串。
- 匹配数字:同正则表达式匹配数字。
- 缺省值:同正则表达式缺省值。
其参数的表示方法与正则表达式提取器也是相似的。如果边界提取器来提取的,均可以用正则表达式提取器来获取,反之则不行。