2017-10-20 29 views
0

Est-il possible de faire défiler un tableau et de sélectionner un caractère à partir du passwd en utilisant la valeur ord[i]? CodeComment faire une boucle dans un tableau dans un script beanshell dans jmeter 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]); 
message d'erreur

Returns comme suit:

2017-10-23 10: 23: 26270 ERREUR oajuBeanShellInterpreter: Erreur d'invocation de méthode de BSH: eval fichier sourcé: évaluation en ligne de: 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: chaîne ordinal = vars .get ("ordinal"); String [] ord = ordinal.split (","); log.inf. . . '': Erreur dans l'invocation de méthode: Méthode charAt (java.lang.String) introuvable dans class'java.lang.String '

+0

Modified code original et et comprennent maintenant un message d'erreur – Nobody

+0

https://stackoverflow.com/help/someone- réponses – user7294900

Répondre

0

Avec Beanshell, vous pouvez utiliser la méthode String charAt qui renvoie un caractère par index.

Index dans le tableau commence par 0 pour passer à i = 0 et passwd.length() appel:

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

Le problème est que la méthode charAt n'est pas supportée dans jmeter. Il en résulte une erreur. Merci – Nobody

+0

Il fonctionne voir ma réponse mise à jour – user7294900

0

Depuis JMeter 3.1 it is recommended to use JSR223 Test Elements and Groovy language for any form of scripting en JMeter si gentiment envisager de passer à la langue Groovy comme:

Le code correspondant à itérer la chaîne serait quelque chose comme:

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

JMeter Groovy Iterate String

+0

J'ai utilisé une solution de contournement pour contourner cela, en désactivant l'option pour l'ordinal. La configuration ordinale n'est requise que dans quelques scénarios et a été acceptée. – Nobody

+0

J'ai essayé d'utiliser le code ci-dessus, qui affiche juste la liste de tous les mots de passe. Je dois ensuite obtenir le caractère du mot de passe basé sur la valeur ord. C'est si, nous obtenons 1, 4,6 et un mot de passe = a234567, nous devrions retourner un, 4,6. – Nobody