【问题标题】:Need help understanding jmeter regular expression extractor and results tree output需要帮助了解 jmeter 正则表达式提取器和结果树输出
【发布时间】:2024-01-19 21:57:02
【问题描述】:

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

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

我正在尝试将上述每个值分成一个数组以进行进一步评估。

根据本论坛另一篇帖子中的建议,建议采用两步法:

1) 使用第一个正则表达式提取器从页面响应数据中检索上面的数据段

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

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

提取器 1: Jmeter Regular Expression Extractor 1

提取器 2: Jmeter Regular Expression Extractor 2

当我执行上述操作时,我得到以下结果,我不确定如何解释,但似乎正在找到 catEntryIDString,但由于某种原因没有被馈送到第二个正则表达式进程:

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

任何帮助都将不胜感激,因为 Google 搜索没有找到有用的信息,而且 JMeter 的 BlazeMeter 帮助页面没有详细介绍(至少基于我对该站点的信息搜索)。

提前致谢!!

【问题讨论】:

    标签: jmeter


    【解决方案1】:

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

    试试下面的正则表达式:

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

    以下是图片参考:

    一旦您将所有三个值都捕获到称为AllValuesReference Name 中(在示例图像中),那么我们可以按如下方式访问每个组/值:

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

    图片参考:

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

    ${reference_name}

    例如:

    ${AllValues_1_g1} - 使用445653 值。

    参考:

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

    【讨论】: