Jmeter - 使用 JSR223 Post 处理器调用 javascript
Jmeter - Calling javascript using JSR223 Post processor
我使用正则表达式捕获了 6 个元素。说
Variable : UserDetails
Regular Expression : loadHeadWorkFlow\('(.+?)','(.+?)','(.+?)','(.+?)','(.+?)','(.+?)','/I
Template : $$$$$$
现在我可以通过 UserDetails_g1、UserDetails_g2.....UserDetails_g6
访问这些值
接下来,这 6 个值需要使用 javascript 文件加密。该文件包含逻辑。
我的代码应该如何使用 JSR223 post 处理器?
我遵循的步骤:
1.
load('Encryption.js');
var result = encrypt("${UserDetails_g1}","password");
log.info("encrypted value is "+result);
vars.put("LoginDataString",result);
var result1 = encrypt("${UserDetails_g2}","password1");
vars.put("UserId",result1);
var result2 = encrypt("${UserDetails_g3}","password2");
vars.put("RoleId",result2);
第一个值已正确加密。但其他值不正确。如果我为每个变量添加单独的 post 处理器。所有加密值均正确显示。
有没有一种方法可以让我使用单个 post 处理器来执行所有 6 种加密。提前致谢
此致,
阿吉特
从 JMeter 的角度来看没有问题,只需使用 Debug Sampler and View Results Tree listener combination. 检查您的 UserDetails_g2
变量是否具有预期值,您可能需要检查此 encrypt()
函数实现。
另一个可能的原因是 JavaScript 语言选择本身,根据 JMeter 最佳实践 it's recommended to use Groovy language for scripting,Nashorn 引擎性能在负载方面是一个很大的问号,因此您可能想要考虑重写 Groovy
中的函数
使用 vars
而不是 ${}
语法
var result = encrypt(vars.get("UserDetails_g1"),"password");
log.info("encrypted value is "+result);
vars.put("LoginDataString",result);
var result1 = encrypt(vars.get("UserDetails_g2"),"password1");
vars.put("UserId",result1);
var result2 = encrypt(vars.get("UserDetails_g3"),"password2");
vars.put("RoleId",result2);
我使用正则表达式捕获了 6 个元素。说
Variable : UserDetails
Regular Expression : loadHeadWorkFlow\('(.+?)','(.+?)','(.+?)','(.+?)','(.+?)','(.+?)','/I
Template : $$$$$$
现在我可以通过 UserDetails_g1、UserDetails_g2.....UserDetails_g6
访问这些值接下来,这 6 个值需要使用 javascript 文件加密。该文件包含逻辑。
我的代码应该如何使用 JSR223 post 处理器?
我遵循的步骤:
1.
load('Encryption.js');
var result = encrypt("${UserDetails_g1}","password");
log.info("encrypted value is "+result);
vars.put("LoginDataString",result);
var result1 = encrypt("${UserDetails_g2}","password1");
vars.put("UserId",result1);
var result2 = encrypt("${UserDetails_g3}","password2");
vars.put("RoleId",result2);
第一个值已正确加密。但其他值不正确。如果我为每个变量添加单独的 post 处理器。所有加密值均正确显示。
有没有一种方法可以让我使用单个 post 处理器来执行所有 6 种加密。提前致谢
此致, 阿吉特
从 JMeter 的角度来看没有问题,只需使用 Debug Sampler and View Results Tree listener combination. 检查您的 UserDetails_g2
变量是否具有预期值,您可能需要检查此 encrypt()
函数实现。
另一个可能的原因是 JavaScript 语言选择本身,根据 JMeter 最佳实践 it's recommended to use Groovy language for scripting,Nashorn 引擎性能在负载方面是一个很大的问号,因此您可能想要考虑重写 Groovy
中的函数使用 vars
而不是 ${}
语法
var result = encrypt(vars.get("UserDetails_g1"),"password");
log.info("encrypted value is "+result);
vars.put("LoginDataString",result);
var result1 = encrypt(vars.get("UserDetails_g2"),"password1");
vars.put("UserId",result1);
var result2 = encrypt(vars.get("UserDetails_g3"),"password2");
vars.put("RoleId",result2);