如何在JMeter中使用正则表达式提取器提取某些值?

时间:2012-05-16 21:10:03

标签: regex jmeter

如果我有两个相同的标签和相同的属性,唯一的区别是值,我该如何提取第二个?

<data xsi:type="soapenc:string">0</data>
<data xsi:type="soapenc:string">1</data>

我尝试过以下操作。

<data xsi:type="soapenc:string">0</data><data xsi:type="soapenc:string">(.+?)</data>

并将值分配给myID。但是当我在脚本中输入$ {myID}时,它使用字符串“$ {myID}”而不是实际值。提取不起作用吗?或者我需要为它使用不同的变量吗?

我有一个不同的采样器,我只有一个标签。例如,

<data xsi:type="soapenc:string">0</data>

当我这样做时,

<data xsi:type="soapenc:string">(.+?)</data>

并分配给myAnotherID,我可以使用$ {myAnotherID},该值将在脚本中使用。

那么,为什么$ {myID}不会返回值?

提前致谢, 蒙

1 个答案:

答案 0 :(得分:5)

使用单个表达式 - <data xsi:type="soapenc:string">(.+?)</data> - 来获取所有匹配项 如果有多个匹配,jmeter将根据您尝试提取的变量名称为每个匹配生成特定变量 - 例如refName_N:myAnotherID_1,myAnotherID_2,...,myAnotherID_N。<登记/> 然后,您可以通过相应的变量(在您的示例中为myAnotherID_1)引用所需的值。

  • 查看Regular Expression Extractor reference的匹配号码说明。
  • 使用正则表达式提取器查看有关提取和访问批量值的this post
  • 您还可以将Debug SamplerJMeter Variables = true一起使用,以查看提取批量值时生成的所有变量。
  • 查看this post是否在没有ForEach控制器的情况下循环遍历多个RegExp Extractor输出值。

希望这有帮助。