处理beanshell预处理器时出错

时间:2015-12-17 14:31:47

标签: jmeter beanshell

我是beanshell脚本的新手。所以我的查询可能有基本的语法问题。 我正在接受" DocConnectionId"来自正则表达式提取器,它是应用程序屏幕中元素的数量。我有GetNewReferralId,我想要与DocConnectionId匹配变量值。

我写了以下代码:

 int DocConnectionId =        Integer.parseInt(vars.get("connectionIDWithDoc_matchNr"));
 int GetNewReferralId = Integer.parseInt(vars.get("GetNewReferral"));

 for(int i = 1;i<=DocConnectionId;i++)
 {
      if(GetNewReferralId.equals(vars.get("connectionIDWithDoc_"+i))){
           Integer.parseInt(vars.put("ConnectionWithDoc"));
           break;   
      }
}

但我在错误日志中收到以下错误。

jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval   Sourced file: inline evaluation of: ``int DocConnectionId = Integer.parseInt(vars.get("connectionIDWithDoc_matchNr")); . . . '' : Typed variable declaration : Method Invocation Integer.parseInt 

2 个答案:

答案 0 :(得分:0)

很可能connectionIDWithDoc_matchNr未定义,或者你的情况出错了。

你能否告诉你完整的测试计划。

答案 1 :(得分:0)

您的代码没有多大意义,请尝试详细说明需要完成的工作,以便我们在解释中提出更优雅的解决方案。

直到这段时间是一条建议:

  1. 如果您在Beanshell脚本的最开头添加debug();行 - 您将获得额外的调试输出到STDOUT(控制台,您从中启动JMeter)
  2. 如果您将代码包含在try/catch块中,例如:

    try {
        //your code here
    }
    catch (Throwable ex) {
        log.error("Error in script", ex);
    }
    

    您将能够在 jmeter.log 文件中看到更易读和易懂的堆栈跟踪(通常在文件夹中生成,您启动JMeter表单)

  3. 熟悉JMeter API w.r.t.您要定位的课程。从stackoverflow复制粘贴而不了解代码的作用会导致未定义的结果
  4. 请参阅How to Use BeanShell: JMeter's Favorite Built-in Component文章,了解更详细的解释以及在JMeter测试脚本中使用Beanshell的几个实际示例。