响应断言/正则表达式提取器在JMeter中不工作

响应断言/正则表达式提取器在JMeter中不工作,jmeter,Jmeter,我正在尝试提取CSRF令牌,以便登录并获取cookies,但我无法 当访问包含CSRF令牌的URL时,我能够获得200响应代码,并且我能够在浏览器和控制台上看到它,但是我的响应断言无法断言任何内容,无论我如何更改“应用于”、“要测试的字段”和“模式匹配规则”部分。我的正则表达式提取器也无法获取任何内容。所有指向URL的标题都在那里。有什么建议吗 忘了提一下,我可以在一台服务器上得到它,它和这个服务器完全一样(或者应该是一样的) 编辑: 我将它放在具有该响应的HTTP采样器下,下面是一个示例,

我正在尝试提取CSRF令牌,以便登录并获取cookies,但我无法

当访问包含CSRF令牌的URL时,我能够获得200响应代码,并且我能够在浏览器和控制台上看到它,但是我的响应断言无法断言任何内容,无论我如何更改“应用于”、“要测试的字段”和“模式匹配规则”部分。我的正则表达式提取器也无法获取任何内容。所有指向URL的标题都在那里。有什么建议吗

忘了提一下,我可以在一台服务器上得到它,它和这个服务器完全一样(或者应该是一样的)

编辑:

我将它放在具有该响应的HTTP采样器下,下面是一个示例,说明我的响应断言得到了什么。我还添加了各种图像


不幸的是,您没有共享您的输出,因此我无法确定,但尽管您的正则表达式在这两种情况下似乎都是正确的,但可能是由于一些额外的间距,它不匹配

看起来您需要的是一个有效的JSON,因此可以使用和/或代替正则表达式,而额外的间距无关紧要

示例:如果响应数据为

我可以将JSON提取器指定为

(最重要的一行是JSON路径:
$.token

结果将是变量
token
,值为
12345


一个很好的在线JSON路径测试工具,它可以帮助您找到正确的JSON路径。

如果您的目标是检查是否存在名为
的令牌以及我建议使用的任意值

  • 将JSON断言添加为要断言的请求的子级
  • 使用以下查询:

  • JSON断言自


    如果仍要执行响应断言,请按如下方式进行配置:

    • 模式匹配规则:
      包含
    • 要测试的模式:
      {“令牌”:“(.+?)”}

    谢谢您的评论!我的响应数据的格式与您的相同,但我的值包含各种字母、数字以及一个点和一个破折号。我像您一样尝试了它,在jsonpathonline上,它显示$.token可以工作,但是当我将它放在与HTTP采样器相同级别的代码中,并且放在其中一个级别时,它就不工作了:(你有什么想法吗?你知道我将如何存储它吗?我看到后缀_ALL复选框可以做到这一点,但我必须将它存储在一个特定的变量中…@kiril-sit应该位于HTTP Sampler下,它将该标记作为响应,而不是在它旁边。你还需要分享你的计划是什么样子,以及包含该tok的响应示例。)enHi@kiril-s,我将我的JSON提取器更改为在HTTP采样器下,该采样器返回一个令牌作为响应。此外,我还包括了更多显示我的响应的图片,以及我希望获得的内容。请在您的问题中更加具体,您希望实现什么?如果它正在提取令牌,请在HTTP采样器下使用JSON提取器它提供令牌作为响应。将令牌存储在一个变量中,并在其他后续请求中使用。您的响应断言在测试计划中有何用途?您不能在响应断言中使用正则表达式进行匹配。这就是响应断言失败的原因。@Jahan,我想我的问题是,为什么我的正则表达式提取器现在是JSON提取器,而不是提取令牌?对于响应断言,我正在查看浏览器中的文本,其中包含作为文本的“令牌”,我不是指作为变量的“令牌”。
    {"token":"12345"}
    
    $.token