正则表达式提取特定<input />标记的值

时间:2014-12-15 10:21:23

标签: html regex jmeter

我的目标是使用Regex从HTML文档中提取具有特定名称的标记的值。代码的相关部分是:

<!-- hidden datas -->
        <p class="hidden">
            <input type="hidden" name="token" value="6ac2c9b7d56b483ad6b9db051a285637" />
            <input type="hidden" name="id_product" value="541" id="product_page_product_id" />
            <input type="hidden" name="add" value="1" />
            <input type="hidden" name="id_product_attribute" id="idCombination" value="" />
        </p>

我需要提取字母数字字符 6ac2c9b7d56b483ad6b9db051a285637 不幸的是,除了通过Regex之外别无他法。

同样的标记也出现在文档的另一部分中。也许在那段代码中提取更容易?

        <script type="text/javascript" src="/webshop/js/tools.js"></script>
    <script type="text/javascript">
        var baseDir = '/webshop/';
        var static_token = '6ac2c9b7d56b483ad6b9db051a285637';
        var token = '1799f145490151b92137df1493a520cc';
        var priceDisplayPrecision = 2;
    </script>

4 个答案:

答案 0 :(得分:1)

我建议使用XPath Extractor获取它,如下所示:

  1. 将XPath Extractor添加为返回该响应的请求的子项
  2. 添加一些有意义的内容Reference Name - 它将成为保存结果的JMeter变量名称,即token
  3. 如果响应不符合XHTML,请选中Use Tidy
  4. 在`XPath Query&#34;中使用以下XPath表达式输入:

    //input[@name='token']/@value
    
  5. 在必要时将提取的值称为${token}
  6. 有关XPath语言的详细信息,请参阅以下资源:

    使用Regex也可以工作,但是对于复杂的多行HTML,最好使用XPath或CSS/JQuery提取器。有关说明,请参阅famous answer on StackOverflow

答案 1 :(得分:0)

以下正则表达式将在第二个示例中捕获令牌:

/var static_token = '([0-9a-f]{32})';/

答案 2 :(得分:0)

使用JMeter的正则表达式提取器组件来提取字符串, 表达式将是,

static_token \= '(\w+)';

Template : $1$
Match no : 1 

这应该在指定变量中提取值。

答案 3 :(得分:0)

JMeter文档有一个与您想要实现的内容非常匹配的示例: http://jmeter.apache.org/usermanual/regular_expressions.html

在你的情况下:

<input type="hidden" name="token" value="([^"]+)" />