Jmeter没有使用reg ex提取器正确提取值

时间:2010-05-11 14:02:55

标签: regex jmeter

Jmeter没有正确提取正则表达式的值。
当我使用以下html在正则表达式教练中使用此正则表达式(NAME="token" \s value="([^"]+?)")时,一切正常但在将reg与正则表达式extrator添加到请求时,即使输出中的html相同,也没有找到该值。

<HTML>
<script type="text/javascript">
    function dostuff(no, applicationID)
    {
        submitAction('APPS_NAME' , 'noSelected=' + no + '&applicationID=' + applicationID);
    }
</script>

<FORM NAME="baseForm" ACTION="" METHOD="POST">
    <input type="hidden" NAME="token" value="fc95985af8aa5143a7b1d4fda6759a74" >

<div id="loader" align="center">
        <div>
            <strong style="color: #003366;">Loading...</strong>
        </div>
        <img src="images/initial-loader.gif" align="top"/>
    </div>

<BODY ONLOAD="dostuff('69489','test');">

</FORM>
</HTML>  

来自正则表达式提取器

Reference Name: token
Regular Expression: (NAME="token" \s value="([^"]+?)")
Template: $1$
Match No.: 1
Default value: wrong-token

我之前代码的POST后的请求正在返回:

POST data:
token=wrong-token

在树查看器的下一个请求中。

但是当我在代理中检查真实请求时,令牌就在那里。

注意:我尝试了没有括号的正则表达式,也没有用。

有没有人知道这里有什么问题? 为什么jmeter无法使用正则表达式extrator找到我的令牌?

3 个答案:

答案 0 :(得分:2)

您的正则表达式会查找文本NAME="token",后跟空格,后跟空格,制表符或换行符,后跟空格,后跟文本value=",后跟一个或多个非空格 - 引用字符,然后是另一个"

如果它没有在字符串中找到它(并且你的文本样本不匹配),它就会失败。

你真的想做什么?看起来你正在用正则表达式解析HTML。不是个好主意。

答案 1 :(得分:0)

您可以使用XPath Extractor代替正则表达式提取器。

您的xpath查询应返回您要提取的值 在这种情况下,它看起来像:

//input[@type="hidden"][@name="token"]/@value

提取的值将存储在XPath Extractor的“Reference Name”字段中指向的jmeter变量中(例如,在您的情况下为${token})。


注意:由于此处XPath Extractor用于解析HTML(而不是XML)响应,请确保使用Tidy(容错解析器)选项是CHECKED(在XPath Extractor's control panel中)。

答案 2 :(得分:0)

您需要更新正则表达式格式,如下所示:

Reference Name: token
Regular Expression: NAME="token"\svalue="(.+)"
Template: $1$
Match No.: 1
Default value: wrong-token