无法按预期引用 jmeter 变量

jmeter variable can not be referenced as expected

我的测试计划有问题。如果我添加用户定义变量,比方说 csrftoken 并在用户定义变量配置元素中分配 NOT_INITIALIZED 给它,它会被传递到引用它的 http 请求,但不会在具有正则表达式的先前 http 请求采样器中设置extractor 子元素,应该设置它,这意味着它作为 "NOT_INITIALIZED" 传递。如果我不使用 User Defined Variables config 元素来声明它,我就无法在以后的 http 请求中引用它,也就是说,它仍然像 ${csrftoken},尽管它 "should be" set/created 被以前的 http请求及其 post 处理正则表达式提取器,因为它正确引用了名称。我认为,范围可能存在一些问题,但我不知道是什么。一切都在同一个事务控制器中,如果我将一切直接放在线程组级别,则不会发生任何变化。我错过了什么?提前致谢。

无需初始化变量,Regular Expression Extractor 可以自行创建变量并为其赋值。

如果变量值没有被替换 - 正则表达式或模板有问题。如果您可以使用相关的响应位更新您的问题,您的正则表达式提取器配置社区和我本人将能够提供帮助。

很少参考:

  • 您可以直接在 View Results Tree 侦听器中通过从下拉列表中选择 RegExp Tester 选项来测试您的正则表达式对响应数据的响应

  • 有时使用正则表达式解析 HTML 并不方便,因为它们可能很复杂、依赖于标记且脆弱,因此最好考虑使用 XPath Extractor or CSS/JQuery Extractor

  • 有关如何在 JMeter 测试中绕过 CSRF 保护的全面信息,请参阅 How to Load Test CSRF-Protected Web Sites 指南。

感谢您的回答。我认为正则表达式提取器还可以:

Apply To:                Main sample and sub samples
Field to check:          Body
Reference Name:          csrftoken
Regular Expression:      csrfToken = '(.+?)';
Template:                $
Match No.(0 for Random): 1
Default Value:         

当我使用 View Results Tree 中的 RegExp 测试器时,它在响应数据上给出了 4 个匹配项,例如:

Match count: 4
Match[1][0]=csrfToken = 'Wp6jXFdyUkJmJaJq_MVwH-rKnI7jwXHEtwxLoddUBHLzyT4*';
Match[1][1]=Wp6jXFdyUkJmJaJq_MVwH-rKnI7jwXHEtwxLoddUBHLzyT4*
Match[2][0]=csrfToken = 'Wp6jXFdyUkJmJaJq_MVwH-rKnI7jwXHEtwxLoddUBHLzyT4*';
Match[2][1]=Wp6jXFdyUkJmJaJq_MVwH-rKnI7jwXHEtwxLoddUBHLzyT4*
Match[3][0]=csrfToken = 'Wp6jXFdyUkJmJaJq_MVwH-rKnI7jwXHEtwxLoddUBHLzyT4*';
Match[3][1]=Wp6jXFdyUkJmJaJq_MVwH-rKnI7jwXHEtwxLoddUBHLzyT4*
Match[4][0]=csrfToken = 'Wp6jXFdyUkJmJaJq_MVwH-rKnI7jwXHEtwxLoddUBHLzyT4*';
Match[4][1]=Wp6jXFdyUkJmJaJq_MVwH-rKnI7jwXHEtwxLoddUBHLzyT4*

我宁愿 post 从这里摘录 jmx 吗?