我的测试计划有问题。如果我添加用户定义的变量,比如说 csrftoken 并在用户定义的变量配置元素中为其分配 NOT_INITIALIZED,它会传递给它被引用的 http 请求,但未在具有正则表达式提取器子元素的先前 http 请求采样器中设置,那应该设置它,这意味着它作为“NOT_INITIALIZED”传递。如果我不使用用户定义变量配置元素来声明它,我不能在以后的 http 请求中引用它,也就是说,它仍然像 ${csrftoken},尽管它“应该”由之前的 http 请求及其创建后处理正则表达式提取器,因为它正确引用了名称。我认为,范围可能存在一些问题,但我不知道是什么。一切都在同一个事务控制器中,如果我将所有内容直接放在线程组级别,则没有任何变化。我错过了什么?提前致谢。
问问题
846 次
2 回答
0
不需要初始化变量,Regular Expression Extractor 可以自己创建变量并为其赋值。
如果变量值没有被替换 - 正则表达式或模板有问题。如果您可以使用相关响应位更新您的问题,并且您的正则表达式提取器配置社区和我自己将能够提供帮助。
几个参考:
您可以通过从下拉列表中选择 RegExp Tester 选项,在View Results Tree侦听器中针对响应数据测试正则表达式
有时使用正则表达式解析 HTML 并不方便,因为它们可能很复杂、依赖于标记且易碎,因此最好考虑使用XPath Extractor或CSS/JQuery Extractor。
- 有关如何在 JMeter 测试中绕过 CSRF 保护的全面信息,请参阅如何加载测试受 CSRF 保护的网站指南。
于 2015-08-25T10:36:17.827 回答
0
谢谢回答。我认为正则表达式提取器是可以的:
Apply To: Main sample and sub samples
Field to check: Body
Reference Name: csrftoken
Regular Expression: csrfToken = '(.+?)';
Template: $1$
Match No.(0 for Random): 1
Default Value:
当我使用查看结果树中的 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*
我宁愿在这里发布 jmx 的摘录吗?
于 2015-08-25T12:00:02.737 回答