2017-10-20 102 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