2017-10-20 1580 views
0

是否可以遍历数组并使用ord[i]值从passwd中选择一个字符?代码如何遍历jmeter中的beanshell脚本中的数组3.2

   String ordinal = vars.get("ordinal"); 
      String[] ord = ordinal.split(","); 
      log.info(ord[0]); 

      String passwd = vars.get("password"); 
      requiredOrd = new ArrayList(); 
      for(int i=0; i< ord.length; i++) 
      { 

        requiredOrd.add((passwd.charAt(ord[i]))); 

       } 

      log.info(requiredOrd[0]); 

返回错误消息如下:

2017年10月23日10:23:26270 ERROR oajuBeanShellInterpreter:错误调用BSH方法:EVAL源文件:String ordinal = vars.get("ordinal"); String[] ord = ordinal.split(","); log.inf . . . '' : Error in method invocation: Method charAt(java.lang.String) not found in class'java.lang.String' 2017-10-23 10:23:26,270 WARN o.a.j.e.BeanShellPostProcessor: Problem in BeanShell script: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of:字符串序= VARS:内嵌评价获得( “序号”); String [] ord = ordinal.split(“,”); log.inf。 。 。 '':方法调用错误:方法charAt(java.lang.String)没有在类'java.lang.String'中找到

+0

修改原代码和现在包括错误消息 – Nobody

+0

https://stackoverflow.com/help/someone-回答 – user7294900

回答

0

使用Beanshell,您可以使用字符串方法charAt,它为每个索引返回字符。在阵列

指数从0开始,从而改变i = 0passwd.length()电话:

for(int i=0;i<passwd.length(); i++) { 
    log.info(passwd.charAt(i)) 
+0

问题在于jmeter不支持charAt方法。因此导致错误。感谢 – Nobody

+0

它的工作看我更新的答案 – user7294900

0

由于JMeter的JMeter 3.1 it is recommended to use JSR223 Test Elements and Groovy language for any form of scripting所以笑纳切换到Groovy语言为:

相关的代码来遍历字符串会是这样的:

def password = 'foo' 
for (char c : password.toCharArray()) { 
    log.info('Current char: ' + c) 
} 

JMeter Groovy Iterate String

+0

我用一个解决方法绕过这个,通过禁用序号的选项。序号设置仅在少数情况下需要并已被接受。 – Nobody

+0

我试图使用上面的代码,它只输出所有密码的列表。我需要根据ord值从密码中获取角色。那就是,如果我们得到1,4,6和密码= a234567,我们应该返回a,4,6。 – Nobody