如何从正则表达式提取器中提取所有值,并将逐个值传递给http请求的Path

时间:2015-11-27 14:45:23

标签: regex jmeter

以下是示例视图

<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 &amp; 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值 请帮忙... 提前谢谢..

1 个答案:

答案 0 :(得分:0)

  1. 使用XPath ExtractorCSS JQuery Extractor代替正则表达式可能更容易。一般来说parsing HMTL with regular expressions isn't a very good idea。示例XPath Extractor配置如下所示:

    • 如果响应不符合XHTML,请选中Use Tidy
    • 参考名称:任何有意义的内容,即Form - 它将是结果变量名称/前缀
    • XPath Expresssion://a[contains(@class, "Anchor")]/@href - 它提取“class”中具有“Anchor”测试的所有链接的“href”属性

    Xpath Extractor

  2. 为了动态构建下一个请求路径,添加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指南。