JMeter:正则表达式提取器不拉令牌

时间:2017-10-31 20:24:48

标签: regex jmeter

我需要从网页中提取CSRF令牌,然后通过BeanShell进行记录。后一部分工作得益于我在this thread中收到的帮助,但现在我需要弄清楚如何让$ {token}填充正确的数据。

注意:我知道正则表达式提取器不是首选方法,但在这种情况下,我必须保持在练习的参数范围内。

首先,我设置了一个HTTP请求来对www.blazedemo.com/register执行GET。

其次,我检查了响应树中显示的响应数据,以找到CSRF令牌:

<!-- CSRF Token -->
<meta name="csrf-token" content="4ZCKKqQgwJH5lT5dQSeAwgeyOr7plAe7IOVRGmQm">

我有一个Regex Extractor设置来抓住它:

enter image description here

如果它没有这样做,我将默认设置为“NOT_FOUND”。

最后,我有一个后处理器记录给$ {token}的任何值。

我在日志中找到以下内容:

  

2017-10-31 15:12:31,975 INFO o.a.j.u.BeanShellTestElement:令牌   是:NOT_FOUND

2 个答案:

答案 0 :(得分:2)

您可以在复选框Response Headers中选择,这意味着它会在“请求”标题中搜索表达式。

在您搜索HTML标记元的情况下,您需要选择Body

答案 1 :(得分:2)

请记住it is not recommended to use regular expressions for parsing HTML,我建议改为CSS/JQuery Extractor

  1. 将CSS / JQuery Extractor添加为具有此CSRF令牌的请求的子项
  2. 按如下方式配置:

    • 参考名称:任何有意义的内容,即token
    • CSS / JQuery Expression:meta[name=csrf-token]
    • 属性:content

      JMeter CSS Jquery Extractor

  3. 演示:

    JMeter CSS Jquery Extractor Demo

    更多信息:How to Use the CSS/JQuery Extractor in JMeter

    如果您仍想使用正则表达式 - 请更改&#34;字段以检查&#34;到Body,但是我不建议这样做,因为在解析HTML响应时,正则表达式很难开发和/或支持,并且对任何标记更改都非常敏感,即如果属性顺序发生变化或者属性转到新行,它将破坏您的测试。