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

Mon*_*han 1 regex jmeter

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

<data xsi:type="soapenc:string">0</data>
<data xsi:type="soapenc:string">1</data>
Run Code Online (Sandbox Code Playgroud)

我尝试过以下几点.

<data xsi:type="soapenc:string">0</data><data xsi:type="soapenc:string">(.+?)</data>
Run Code Online (Sandbox Code Playgroud)

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

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

<data xsi:type="soapenc:string">0</data>
Run Code Online (Sandbox Code Playgroud)

当我做,

<data xsi:type="soapenc:string">(.+?)</data>
Run Code Online (Sandbox Code Playgroud)

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

那么,为什么$ {myID}没有返回值呢?

在此先感谢,Monte

Ali*_*lik 5

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

  • 查看匹配编号说明的正则表达式提取器参考.
  • 查看这篇文章,了解如何使用Regular Expression Extractor提取和访问批量值.
  • 您也可以使用调试取样JMeter Variables = true看到后提取一批价值产生的所有变量.
  • 查看这篇文章,了解如何在没有ForEach Controller的情况下循环访问多个RegExp Extractor输出值.

希望这可以帮助.