我有一个页面,它以下列格式返回一组目录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帮助页面没有详细说明(至少根据我对该网站的信息搜索)。
提前致谢!!
答案 0 :(得分:0)
您不需要两个正则表达式提取器来从单个响应中捕获多个值。我们可以使用模板通过使用()
指定多个组来捕获多个值,即括号。
尝试以下正则表达式:
addCatentryId\('(.*?)', '(.*?)', '(.*?)'\);
将所有三个值捕获到名为Reference Name
的{{1}}(在示例图像中)后,我们可以按如下方式访问每个组/值:
第一组 - AllValues_1_g1(产生AllValues
)
第二组 - AllValues_1_g2(产生445653
)
第三组 - AllValues_1_g3(产生23151
)
如果要在后续请求中引用任何捕获的valule,我们在JMeter中使用以下语法:
$ {reference_name}
例如:
csb_RVI_10053
- 使用${AllValues_1_g1}
值。
参考: