以下是示例视图
<a class="main mainAnchor current currentAnchor" tabindex="-1" href="Form1">
<span>Home</span>
<a class="main mainAnchor parent parentAnchor" tabindex="-1" href="Form2">
<span>About Us</span>
<a class="sub subAnchor" tabindex="-1" href="Form3">
<span>Landing</span>
<a class="sub subAnchor" tabindex="-1" href="Form4">
<span>Contact Us</span>
<a class="sub subAnchor" tabindex="-1" href="Form5">
<span>Hours & Map</span
In Jmeter i am using the regular expression as
(<a)\s+(class="(.+?)")\s+(tabindex="-1")\s+(href="(.+?)")>(\n|\r)\s+(<span>)(.+)
使用上面的正则表达式我得到了58个匹配的总数 这是常规表达的示例结果 比赛数:58
Match[1][0]=<a class="main mainAnchor current currentAnchor" tabindex="-1" href="Form1">
<span>some text</span>
Match[1][1]=<a
Match[1][2]=class="some text"
Match[1][3]=some text
Match[1][4]=tabindex="-1"
Match[1][5]=href="Form1"
Match[1][6]=Form1
Match[1][7]=
Match[1][8]=<span>
Match[1][9]=some text</span>
Match[2][0]=<a class="main mainAnchor parent parentAnchor" tabindex="-1" href="Form2">
<span>some text</span>
Match[2][1]=<a
Match[2][2]=class="some text"
Match[2][3]=some text
Match[2][4]=tabindex="-1"
Match[2][5]=href="Form2"
Match[2][6]=Form2
Match[2][7]=
Match[2][8]=<span>
Match[2][9]=About Us</span>
Match[3][0]=<a class="sub subAnchor" tabindex="-1" href="Form3">
<span>some text</span>
Match[3][1]=<a
Match[3][2]=class="sub subAnchor"
Match[3][3]=sub subAnchor
Match[3][4]=tabindex="-1"
Match[3][5]=href="Form3"
Match[3][6]=Form3
Match[3][7]=
Match[3][8]=<span>
Match[3][9]=some text</span>
我可以得到像referenceName_g6这样的第一个值 我想要检索属性href Form2,Form3,Form4等的所有值 获取值后,我想将此值(referenceName_g6)逐个传递给下一个http请求的Path值 请帮忙... 提前谢谢..
答案 0 :(得分:0)
使用XPath Extractor或CSS JQuery Extractor代替正则表达式可能更容易。一般来说parsing HMTL with regular expressions isn't a very good idea。示例XPath Extractor配置如下所示:
Use Tidy
框Form
- 它将是结果变量名称/前缀//a[contains(@class, "Anchor")]/@href
- 它提取“class”中具有“Anchor”测试的所有链接的“href”属性为了动态构建下一个请求路径,添加Beanshell PreProcessor作为下一个请求的子项,并将以下代码添加到其“脚本”区域
Iterator it = vars.getIterator();
while (it.hasNext()) {
Map.Entry var = (Map.Entry) it.next();
log.info("Processing variable: " + var.getKey());
if (var.getKey().toString().startsWith("Form")) {
sampler.addArgument(var.getKey(), var.getValue().toString());
}
}
上面的代码将添加名称以“Form”开头的所有变量名称作为请求参数名称,变量值将是参数值。有关在JMeter测试中使用Beanshell的更多信息,请参阅How to Use BeanShell: JMeter's Favorite Built-in Component指南。