【发布时间】:2016-06-13 14:14:23
【问题描述】:
我想在jmeter中提取通过post请求发送的参数值。 我知道使用正则表达式来提取响应值或请求 URL,但在这里我想提取 post 请求的值。
我已经彻底how to extract value from request in Jmeter,但没有奏效。
【问题讨论】:
标签: jmeter
我想在jmeter中提取通过post请求发送的参数值。 我知道使用正则表达式来提取响应值或请求 URL,但在这里我想提取 post 请求的值。
我已经彻底how to extract value from request in Jmeter,但没有奏效。
【问题讨论】:
标签: jmeter
不知道你为什么需要它,因为你发送了“东西”,你应该已经有那个“东西”,因此你不需要提取它,但是你去:
为了保存第一个参数值(如果您使用“正文数据”模式,则保存整个帖子数据):
将以下代码放入 PostProcessor 的“脚本”区域:
String request = ctx.getCurrentSampler().getArguments().getArgument(0).getValue();
vars.put("request", request);
您将能够在需要时以${request} 的形式访问提取的值。
说明:
ctx - JMeterContext 类实例的简写getCurrentSampler() - 如果是 HTTP 请求采样器,则代表 HTTPSamplerProxy
有关在 JMeter 测试中使用 Beanshell 测试元素中的 JMeter 和 Java API 的更多信息,请参阅 How to Use BeanShell: JMeter's Favorite Built-in Component 指南。
【讨论】:
我使用以下代码在我的 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 变量。 现在,电子邮件将用作变量,其中包含我的 json 请求,我可以使用 jsonPath Extractor 进行提取。
【讨论】:
一个简单的方法是使用 JSON 路径提取器。
只有
对于你给出的例子
{ "data" : { "name" : "john_doe", } }
'变量名称:YourNewVar' 'JSON 路径:$.data.name' 应该可以,但您可能需要做一些试验。
您可能想要添加一个“调试采样器”(它是标准采样器之一)并输入其标题 $YourNewVar 以便您可以看到正在提取的内容。
Beanshell 和“正则表达式提取器”当然可以使用,但如果您不熟悉它们,使用起来可能会有点困难。
【讨论】: