如何通过 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
我有一个包含学生用户 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