从jmeter发布请求提取值
我想提取通过jmeter发送请求发送的参数值。 我知道使用正则表达式来提取响应值或请求URL,但在这里我想提取post请求的值。从jmeter发布请求提取值
我已经彻底how to extract value from request in Jmeter但它没有奏效。
我用下面的代码在我的http请求中添加了一个Beanshell PostProcessor。
import org.apache.jmeter.config.Argument;
import org.apache.jmeter.config.Arguments;
Arguments argz = ctx.getCurrentSampler().getArguments();
for (int i = 0; i < argz.getArgumentCount(); i++) {
Argument arg = argz.getArgument(i);
String a = arg.getValue();
vars.put("EMAIL",a);
}
说明:我得到我的请求作为JSON并将其放入EMAIL中。现在我可以在我的其他请求中使用EMAIL作为变量。
然后,我添加了一个jp @ gc Json路径提取器,并将其应用于Jmeter Varaible。 现在,电子邮件将被用作变量,其中包含我的json请求,我可以使用jsonPath提取器进行提取。
不知道你为什么需要它给你送“东西”,你应该已经有一个“东西”,因此您无需将其解压,但是在这里你去:
为了节省1参数值(如果使用“Body Data”模式,则为整个发布数据):
- 将Beanshell PostProcessor添加为HTTP请求的子项。
-
将下面的代码到后处理的“脚本”区域:
String request = ctx.getCurrentSampler().getArguments().getArgument(0).getValue(); vars.put("request", request);
你将能够在需要访问提取的值作为${request}
。
澄清:
-
ctx
- 速记JMeterContext类实例 -
getCurrentSampler()
- 在HTTP请求取样器的情况下,代表HTTPSamplerProxy
有关使用JMeter的和Java How to Use BeanShell: JMeter's Favorite Built-in Component指南了解更多信息来自JMeter测试中Beanshell测试元素的API。
一个简单的方法是使用JSON路径提取器。
只是有 对于例如你给 { "data" : { "name" : "john_doe", } }
“变量名:YourNewVar” “JSON路径:$ .data.name” 应该工作,但是你可能需要做一些试验。
您可能需要添加一个“调试采样器”(它的一个标准采样器)并放入它的标题$ YourNewVar中,以便看到正在提取的内容。
Beanshell和“Regular Expression Extractor”当然会起作用,但如果您不熟悉它们,可能会稍微难一些。
https://kishorsharma69.wordpress.com/2016/10/03/absolute-directory-path-for-jmx-file-jmeter/了解更多详情。 –