以下是一个人为的演示,它通过更大,更真实的测试计划再现了我遇到的问题。我有3个屏幕截图来演示RegEx PostProcessor在执行期间从不匹配的方式。
[编辑] 请注意,在我的屏幕截图中,要检查的响应字段显示为“响应消息”。我已经测试过Body并按照解释得到了“null”。如果显示Body选择null结果,Screencaps会更好,但这仍然有意义)
1)以下是View Tree中Sampler的Response的HTML: FIGURE 1
注意我正在使用正则表达式[Pp] age \ s \ d {1}在第一个采样器响应中的HTML中成功找到所需的文本“Page 1”。
2)这是第一个采样器上的RegEx PostProcessor: FIGURE 2
请注意,它使用与之前屏幕截图相同的Regex,默认文本为“notfound”,结果变量为“TempVar”。
3)这是第二个采样器的路径,其中第一个采样器正则表达式的结果作为?MyVar=${TempVar}
输入到URL参数中
FIGURE 3
现在再回头看看FIGURE 1,你会发现在执行过程中,第二个采样器上的动态URL在使用“响应消息”时变为“MyVar = notfound”(如果是,则变为“MyVar = null”使用“Body”代替)。
请让我知道我做错了什么。我已经尝试了RegEx Extractor屏幕中的每个组合,但我从来没有能够从表达式返回匹配的文本。
谢谢。
答案 0 :(得分:1)
将您正在使用的正则表达式更改为:
<h3>This\sis\s([^<]*)<\\/h3>
虽然你正在使用的正则表达式确实起作用(它将在第1页上匹配),因为它没有使用()表示法将值返回给变量,你最终会得到null。大括号需要表示发回的内容。
查看this page,它提供了有关JMeter如何与正则表达式配合使用的更多详细信息。