2

Jmeter 没有使用正则表达式正确提取值。
当我(NAME="token" \s value="([^"]+?)")在正则表达式教练中使用以下 html 使用此正则表达式时,一切正常,但是当将带有正则表达式提取器的 reg 添加到请求中时,即使输出中的 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 无法使用正则表达式提取器找到我的令牌?

4

3 回答 3

3

您的正则表达式查找 text NAME="token",然后是空格,然后是空格、制表符或换行符,然后是空格,然后是 text value=",然后是一个或多个非引号字符,然后是另一个"

如果它没有在它正在查看的字符串中找到它(并且您的文本示例不匹配),它就会失败。

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

于 2010-05-11T18:22:39.183 回答
2

您可以使用XPath Extractor代替 Regular Expression Extractor。

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

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

提取的值将存储在指向 XPath 提取器的“参考名称”字段的 jmeter 变量中(例如${token},在您的情况下)。


注意:由于这里 XPath Extractor 用于解析 HTML(不是 XML)响应,请确保选中Use Tidy(容错解析器)选项(在XPath Extractor 的控制面板中)。

于 2012-10-15T20:09:35.670 回答
1

您需要按如下方式更新正则表达式格式:

Reference Name: token
Regular Expression: NAME="token"\svalue="(.+)"
Template: $1$
Match No.: 1
Default value: wrong-token
于 2014-11-27T13:42:39.100 回答