从jmeter post请求中提取值
我想在jmeter中提取通过post请求发送的参数值。 我知道正则表达式用于提取响应值或请求URL,但这里我想提取post请求的值从jmeter post请求中提取值,jmeter,Jmeter,我想在jmeter中提取通过post请求发送的参数值。 我知道正则表达式用于提取响应值或请求URL,但这里我想提取post请求的值 我已经彻底检查过了,但它不起作用。不确定为什么需要它,因为您发送了“某物”,您应该已经有了“某物”,因此您不需要提取它,但现在您可以: 为了保存第一个参数值(如果使用“Body data”模式,则保存整个post数据): 添加为HTTP请求的子级 将以下代码放入后处理器的“脚本”区域: 您将能够在需要时以${request}的形式访问提取的值 澄清: ctx-类
我已经彻底检查过了,但它不起作用。不确定为什么需要它,因为您发送了“某物”,您应该已经有了“某物”,因此您不需要提取它,但现在您可以: 为了保存第一个参数值(如果使用“Body data”模式,则保存整个post数据):
${request}
的形式访问提取的值
澄清:
-类实例的速记ctx
-在HTTP请求的情况下,sampler代表getCurrentSampler()
有关在JMeter测试中使用Beanshell测试元素的JMeter和Java API的更多信息,请参阅指南。一种简单的方法是使用JSON路径提取器 只有 你举的例子
{“数据”:{“名称”:“约翰·多伊”}
'变量名称:YourNewVar'
'JSON路径:$.data.name'
应该可以,但你可能需要做一些实验
您可能需要添加一个“调试采样器”(它是标准采样器之一),并将其标题$YourNewVar放入其中,以便查看提取的内容
当然,Beanshell和“正则表达式提取器”可以工作,但如果您不熟悉它们,可能会更难使用 我在http请求中添加了一个Beanshell后处理器,代码如下
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);
}
import org.apache.jmeter.config.Argument;
导入org.apache.jmeter.config.Arguments;
参数argz=ctx.getCurrentSampler().getArguments();
对于(int i=0;i
说明:我收到一个json格式的请求,并将其发送到电子邮件中。现在我可以在其他请求中使用电子邮件作为变量
然后,我添加了一个jp@gcJson路径提取器,我将其应用于Jmeter变量。
现在,Email将被用作变量,它包含我的json请求,我可以使用jsonPath提取器进行提取 更多细节。
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);
}