-2
votes

Comment appeler une arrayliste globale dans une méthode différente

Je suis nouveau à Selenium, créé une page d'usine. Voici mon scénario:

J'ai déclaré une arraylist public (par exemple: Liste1) en niveau de classe qui stocke la valeur de la méthode1, qui fonctionne bien lorsqu'il est imprimé dans la même méthode. Stocké de la même manière, ArrayList (liste2) dans le même niveau de classe qui stocke la valeur de la méthode2.

Maintenant comparant la liste1 avec la liste2 dans la méthode2 dans la méthode2, List2 montre vide lors de l'impression, de sorte que mon code a échoué.

Je ne sais pas une approche correcte xxx

si LIST1 correspond à la liste 2, le résultat doit afficher la passe. Je ne sais pas comment appeler la matrice globale à une méthode différente. Lorsque je appelle la liste1 dans la méthode 2, le résultat montre vide.


5 commentaires

Pouvez-vous ajouter plus de code? , où ajoutez-vous des données à vos listes?


Je pense que vous devez montrer comment vous remplissez vos arraylistes


Avez-vous des listes de cours de chaîne ou vous venez d'ajouter que pour la question? Si vous utilisez une classe personnalisée, vous devez disposer d'un égale () méthode dans cette classe


Code @umeshkumar Pour ajouter à la liste: Liste Alltext = pilote.Findelements (by.xpath ("// * [@ Id = 'pnlleftmenu'] / Table / Td / TD [2] / TD / TD [ 2] / Todbody / TR [3] / TD / TA Ble / Torbody / TR ")); int total = allText.Size (); pour (int i = 3; i <= total; i ++) {// caselevelsigningcms = pilote.findellement (by.xpath ("// * [@ Id = 'pnlleftmenu'] / Table / T Body / TD [TD [ 2] / Tableau [2] / TODY / TR [3] / TD / TA BLE / TADO / TR / TR [+ "[" + I + "]" + "/ TD [2]")). Gette XT (); Signingcmslist.add (pilote.findellement (by.xpath ("// * [@ Id = 'pnlleftmenu'] / Table / Todbody / TR / TD [2] / TAM E [2] / TADOD / TR [ 3] / TD / Table / Todbody / TR "+" ["+ i +"] "+" / td [2] ")). Obtenez du texte (). Couper ()); }


@Shreygarg J'ai mis à jour la liste1, list2 en niveau de classe sous le public, mais lorsque j'ai imprimé la liste1 dans la méthode 2, il apparaît vide qui fonctionne bien lorsqu'il est imprimé dans la méthode 1. Donc, donc l'inadéquation. Toute suggestion?


4 Réponses :


-1
votes

ArrayList EQUALES La méthode renvoie true uniquement si les deux liste contiennent le même nombre d'éléments dans la commande qui revient autrement faux. Triez les deux listes avant de les comparer comme suit.

Collections.sort(list1);
Collections.sort(list2);

if(list1.equals(list2))
   System.out.println("Pass");
else
  System.out.println("Fail");


1 commentaires

OP a déclaré que la liste1 est vide. Tri des deux listes n'affectera pas une liste vide ni résoudre ce problème.



0
votes

Votre code semble être correct. Toutefois, si l'ordre d'exécution de vos méthodes n'est pas synchrone, la liste intégrée dans une autre méthode peut avoir une liste vide. Pour confirmer cela, vous pouvez ajouter une SYSOOUT pour la liste une dans la méthode2. En ajoutant la priorité @Test (priorité = 1) pour la méthode1 et @Test (priorité = 2) pour la méthode2 peut résoudre votre problème.


1 commentaires

toutes mes méthodes dans une classe et fonctionnent de la même manière dans un seul test.



0
votes

Je suggérerais que vous changiez votre approche. Ce faisant de cette manière empêchera l'exécution parallèle et peut causer des problèmes, probablement ce que vous voyez.

avoir méthodal1 () code> et méthod2 () code> renvoie le Liste code> puis effectuez la comparaison (de préférence une affirmation de Testg ou Junit) dans le script de test lui-même. Changez l'objet de votre page à quelque chose comme ci-dessous. J'ai supprimé le public code> list1 code> et list2 code> et les a créés à l'intérieur des méthodes appropriées, méthodal1 () code> et et Méthode2 () code>. Ces méthodes renvoient les listes, puis la comparaison est effectuée à l'intérieur du script de test. Il s'agit d'une meilleure pratique pour avoir les validations dans le script de test et éviter de faire des validations à l'intérieur de vos objets de page. P> xxx pré>

puis à l'intérieur de votre script de test ajoutez une affirmation. Celui ci-dessous utilise TESTNG . P>

assertEquals(addNewCase.Method1(), addNewCase.Method2(), "Verify the two lists are the same");


0 commentaires

1
votes

J'ai compris la question. Le code n'a aucun problème dans la création de méthodes et stocker les variables. Le problème était dans la test de test, dans un test, j'appelle la classe plusieurs fois où sont les méthodes. J'avais créé plusieurs objets de classe qui était le problème. J'ai supprimé les multiples objets et dans un objet, j'ai appelé toutes les méthodes un par un. Tout a fonctionné bien.

Merci à tous pour vos précieux commentaires, je pouvais en apprendre plus aussi des autres réponses.


0 commentaires