您好,我正在传递一封电子邮件,它是一个时间函数,如下所示
email = ${__time(MMddyy)}_${__time(HMS)}@yopmail.com
每次我调用变量 email 时,该函数的值都会发生变化。 我想将从该函数生成的值存储到一个变量中,并在其他请求中使用它。
因此,目前我在两个不同的 http 请求中收到两封不同的电子邮件,因为我的两个 http 请求之间存在一些时间延迟。
我想做的是..通过从请求中提取值并将其传递到第二个http请求中来存储在第一个http请求中发送的电子邮件。
POST data:
email=062915_160738%40yopmail.com
我知道从html响应中提取的方法..但是有什么方法可以从jmeter中的请求中提取吗?
如果是这样,有人可以告诉我如何实现这一目标吗?
谢谢
最佳答案
- 添加 Beanshell PostProcessor 作为发送 POST 请求的请求的子级
将以下代码放入后处理器的“脚本”区域
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); if (arg.getName().equals("email")) { vars.put("EMAIL", arg.getValue()); break; } }
- 根据需要将生成的值引用为
${EMAIL}
。
澄清:
- 以上代码将提取
email
请求参数的值(如果有)并将其存储到EMAIL
JMeter变量 ctx
- JMeterContext 的简写类实例vars
= JMeterVariables 的简写类实例Arguments
和Argument
- 您可以从 JMeterContext JavaDoc 中找出这一点
参见How to use BeanShell: JMeter's favorite built-in component有关 JMeter 中 Beanshell 脚本编写的更多信息的指南。
关于jmeter - 如何从Jmeter中的请求中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31127129/