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

时间:2018-03-22 15:29:58

标签: jmeter

我试图提取CSRF令牌,以便我可以登录,并且能够获取cookie,但我无法。

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

忘记提及,我能够在一台服务器上得到它,而该服务器与这一服务器完全相同(或者应该是完全相同的......)

Response Assertion

Regular Expression

编辑:

我将它放在具有该响应的HTTP Sampler下,这是我为响应断言获得的示例。我还添加了各种图像。

test plan structure

response assertion that will later fail

failed response

json token I'm trying to extract

json extractor

2 个答案:

答案 0 :(得分:1)

不幸的是你没有分享你的输出,所以我无法确定,但是虽然看起来你的RegEx在两种情况下都是正确的,但由于一些额外的间距,它可能不匹配。

您似乎期待一个有效的JSON,因此您可以使用JSON Extractor和/或JSON Assertion而不是RegEx,因为额外的间距无关紧要。

示例:如果响应数据

{"token":"12345"}

我可以将JSON Extractor指定为

enter image description here

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

,结果将是变量token,其值为12345

Here's一个优秀的在线JSON路径测试程序,它可以帮助您找出正确的JSON路径。

答案 1 :(得分:0)

如果您的目标是检查名称为token的{​​{3}}是否存在以及任意值,我建议您转而使用JSON Object

  1. 将JSON Assertion添加为您要声明的请求的子节点。
  2. 使用以下JSON Assertion查询:

    $.token
    

    JSON Path

  3. JMeter JSON Path Assertion

    以来可以使用JSON断言

    如果您仍想使用响应声明,请按以下步骤进行配置:

    • 模式匹配规则:Contains
    • 要测试的模式:{"token":"(.+?)"}

    JMeter 4.0

相关问题