如何通过 JMeter 从 html 页面中提取所有正则表达式匹配项

How to extract All of reg expression matches from html page via JMeter

我有一个包含学生用户 ID 的 html 页面。我需要从此 html 页面中提取所有 userId 值,并将它们用于 JMeter HTTP 请求的参数中..

例如我在 htm 页面上有以下数据。

<input type="checkbox" StudentID="1503"
<input type="checkbox" StudentID="1504"
<input type="checkbox" StudentID="1505"

等等..

我需要传入的参数值是这样的 selectedIds= 1503,1504,1505 等等..

现在我不确定如何获得我需要在第二个请求中发送的结果。我可以一次提取并使用一个值,但无法弄清楚如何获得我需要的值“1503,1504,1505 ...”

目前我的Reg Exp提取器是这样的

参考名称:myTestVar 正则表达式:StudentID="(.+?)" 模板:$1$ 匹配号:-1

在我的第二个请求中,我引用了变量 ${myTestVar}

请指导我还需要做什么才能以所需的方式获得结果..

"1504,1505,1506"

在这种情况下,最好使用 CSS/JQuery extractor 而不是正则表达式提取器:

  • CSS/JQuery 表达式:输入

  • 属性:学号

  • 参考:myId

那么您的值将在:

  • myId_1
  • myId_2 ...
  • myId_N

参考文献的数量为:

  • myId_matchNr

因此,要连接,您可以使用 Beanshell PostProcessor,它将提取这些、连接并将结果存储在新变量中,使用:

vars.put("concat", )

您可以使用 BeanShell 后处理器:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
String response = prev.getResponseDataAsString();
String finalArr = "";
Pattern pattern = Pattern.compile("<input type=\"checkbox\" StudentID=\"(\d+?)\"");
Matcher matcher = pattern.matcher(response);

while (matcher.find()) 
{
  finalArr = finalArr + matcher.group(1) + ",";
}

或者,如果您正在使用 Regex Extractor,那么也在 Beanshell 后处理器中:

Integer N = Integer.valueOf(vars.get("myTestVar _matchNr"));
String finalArr = "";

for(Integer i = 1; i <= N; i++)
{   
   finalArr = finalArr + (vars.get("myTestVar "+String.valueOf(i)+"_g1")) + ",";
}

可能晚了,但在 3.2+ 中你可以在比赛编号中输入 -1

br