J'essaie d'itérer les éléments, où je dois obtenir un corps de texte pour chaque élément, mais après l'imprimé du 1er élément d'élément, suivant pour le corps d'élément suivant, je reçois "java.lang.indexoutofboundSException: index: 1, taille : 1". Je sais que c'est une solution très simple, mais je suis incapable de le réparer. Aidez-moi s'il vous plaît à résoudre ce problème.
dans mon code ci-dessous, quand "String Text = kpitext.get (i) .getText ();" Impressions pour la deuxième fois que je reçois "java.lang.indexoutofboundsException: index: 1, taille: 1" erreur. p> attendu est-il impossible d'imprimer le corps pour tous les éléments pour l'itération. P> p>
3 Réponses :
Le problème est très simple. Vous utilisez la valeur "I" pour accéder au tableau "KPITEXT". Dans ce cas, votre tableau n'a qu'un seul élément. L'indice 1 est donc hors limites, comme indique la trace de la pile d'exception.
Si vous souhaitez les imprimer tout ce que vous devez faire cela: P>
for (WebElement element : KpiText) System.out.println(element.getText());
Il semble que les noms d'utilisateur.Size () est supérieur à la taille de KPITEXT. Lorsque vous référencez la liste KPITEXT, assurez-vous que l'index est en réalité. Alors peut-être un chèque comme
Si vous êtes itération sur Liste
List<WebElement> KpiText = KPIValues.findElements(By.xpath("//*[@id='main-content-app']/div/div[2]/div/div/div[2]/div[2]/div[1]/div/div[1]"));
for(int i=0; i < KpiText.size() - 1; i++){
WebElement namesOfUsers = userNames.get(i);
System.out.println(namesOfUsers);
namesOfUsers.click();
System.out.println();
String text = KpiText.get(i).getText();
System.out.println(text);
}
avant de faire kpitext.get (i), vous devez vérifier qu'il y a un élément pour cet index i
Tout code change?
Il suffit d'ajouter un si avant cette ligne
Vous utilisez le même index pour la collection d'utilisateurs et la collection KPITEXT. Évidemment, ces collections ont une taille différente