需要帮助理解jmeter正则表达式提取器和结果树输出

时间:2016-11-14 13:38:20

标签: jmeter

我有一个页面,它以下列格式返回一组目录ID:

addCatentryId('445653', '23151', 'csb_RVI_10053');

我试图将上述每个值分成一个数组以供进一步评估。

根据本论坛另一篇文章中的建议,建议采用两步方法:

1)使用第一个正则表达式提取器从页面响应数据

中检索上面的数据段

2)针对第一个数据提取的结果执行后续正则表达式提取器,将字符串数据转换为可用值数组。

为此,我在JMeter脚本中设置了以下提取器:

提取器1: Jmeter Regular Expression Extractor 1

提取器2: Jmeter Regular Expression Extractor 2

当我执行上面的操作时,我得到以下结果,我不知道如何解释,但似乎找到了catEntryIDString,但由于某种原因没有被送到第二个正则表达式进程:< / p>

JMeterVariables:
JMeterThread.last_sample_ok=true
JMeterThread.pack=org.apache.jmeter.threads.SamplePackage@41035d67
START.HMS=073225
START.MS=1479126745560
START.YMD=20161114
TESTSTART.MS=1479129860911
__jmeter.USER_TOKEN__=Place User Order 1-1
arrValItemId= <---- Why is this empty?
catEntryIDString=null <--- should this be null?
catEntryIDString_g=0
catEntryIDString_g0=addCatentryId('460734', '12220', 'csb_RVI_10053'); <-- data appears to be getting retrieved by 1st extractor

任何帮助都会非常感激,因为谷歌搜索没有提供有用的信息,而且JMeter的BlazeMeter帮助页面没有详细说明(至少根据我对该网站的信息搜索)。

提前致谢!!

1 个答案:

答案 0 :(得分:0)

您不需要两个正则表达式提取器来从单个响应中捕获多个值。我们可以使用模板通过使用()指定多个组来捕获多个值,即括号。

尝试以下正则表达式:

addCatentryId\('(.*?)', '(.*?)', '(.*?)'\);

以下是图片参考: enter image description here

将所有三个值捕获到名为Reference Name的{​​{1}}(在示例图像中)后,我们可以按如下方式访问每个组/值:

第一组 - AllValues_1_g1(产生AllValues) 第二组 - AllValues_1_g2(产生445653) 第三组 - AllValues_1_g3(产生23151

图片参考: enter image description here

如果要在后续请求中引用任何捕获的valule,我们在JMeter中使用以下语法:

$ {reference_name}

例如:

csb_RVI_10053 - 使用${AllValues_1_g1}值。

参考:

  1. https://stackoverflow.com/a/39547786/2575259