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找到我的令牌?
答案 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