【问题标题】:Jmeter - Calling javascript using JSR223 Post processorJmeter - 使用 JSR223 后处理器调用 javascript
【发布时间】:2021-01-24 12:28:01
【问题描述】:

我使用正则表达式捕获 6 个元素。说

Variable : UserDetails
Regular Expression : loadHeadWorkFlow\('(.+?)','(.+?)','(.+?)','(.+?)','(.+?)','(.+?)','/I
Template : $1$$2$$3$$4$$5$$6$

现在我可以通过 UserDetails_g1、UserDetails_g2.....UserDetails_g6 访问这些值

接下来,需要使用 javascript 文件对这 6 个值进行加密。该文件包含逻辑。

我的代码应该如何使用 JSR223 后处理器?

我遵循的步骤:

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);

第一个值已正确加密。但其他值不正确。如果我为每个变量添加单独的后处理器。所有加密值均正确显示。

有没有一种方法可以让我使用单个后处理器来执行所有 6 种加密。提前致谢

问候, 阿吉特

【问题讨论】:

    标签: jmeter correlation jsr223


    【解决方案1】:

    使用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);
    

    【讨论】:

      【解决方案2】:

      从 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 中重写该函数

      【讨论】:

      • 我已经在我的回答中回复了你的消息。请考虑一下并为我提供解决方案。稍后我会考虑 groovy 脚本部分。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-07
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多