Comment parcourir une liste de WebElements et imprimer les valeurs une par une pour effectuer une action

  • List allLinks = driver.findElements(By.xpath("//div[@class='datepicker']/div/table/tbody/tr/td/table/tbody[2]/tr/td[@class='' or @class='datepickerSaturday' or @class='datepickerSunday']/a/span"));
    
    Iterator itr = allLinks.iterator();
    while(itr.hasNext()) {
        System.out.println(itr.next());
    }
    

    Je souhaite imprimer les éléments de la liste un par un et effectuer certaines actions. Mais je ne parviens pas à obtenir la valeur présente dans la liste.

    Voici ce que j'obtiens dans la console:

    [[FirefoxDriver: firefox sur MAC (81e15827-9357-0341-9c72-5b26054f780d)]

    Xpath: -

    //div[@class='datepicker']/div/table/tbody/tr/td/table/tbody[2]/tr/td[@class='' or @class='datepickerSaturday' or @class='datepickerSunday']/a/span]
    

    Imprimez la première valeur de la liste. Il doit être placé à la place de LISTVALUE dans le xpath // div [@ class = 'datepicker'] / div / table / tbody / tr / td / table / tbody [2] / tr / td [@ class = '' ou @ class = 'datepickerSaturday' ou @ class = 'datepickerSunday'] / a / span [contient (text (), "LISTVALUE")] pour effectuer l'action de clic

  • Voici un bon exemple de la façon dont je sélectionne dans un menu déroulant:

    public Boolean selectByText( String text ) {
        WebElement dropDown = driver.findElement( By.xpath( ".//dropdown/path" ) );
        dropDown.click();
        List allOptions = dropDown.findElements(By.xpath(".//option"));
        for ( WebElement we: allOptions) { 
            dropDown.sendKeys( Keys.DOWN ); //simulate visual movement
            sleep(250);       
            if ( we.getText().contains( text ) ) select.selectByVisibleText("Value1");
        }
    }
    

    Quelle est la raison d'utiliser la méthode `sleep ()`?

    Lorsque vous simulez l'expérience d'un utilisateur effectuant des raccourcis clavier dans un menu déroulant, vous ne voulez pas que cela aille si vite que vous pouvez le voir.

    Ahh, donc c'est juste pour la démonstration. Je comprends que cela fonctionnera également sans dormir, de sorte que lors de l'exécution de tests _x_ (_x_> 1000), leur temps d'exécution n'est pas prolongé inutile.

    C'est vrai. Quand je fais des tests, j'enregistre de la vidéo et j'exécute le multi-thread et donc la vitesse n'a pas autant d'importance pour moi. Par conséquent, cette technique est vraiment utile pour le débogage en utilisant la lecture vidéo.

  • Il vous donne l'élément Web juste mis .getText () chaque fois que vous voyez un tel code. Faire-

    Iterator itr = allLinks.iterator();
    while(itr.hasNext()) {
        System.out.println(itr.next().getText());
    }
    

    D'accord, cette question a été posée il y a longtemps et je l'ai vu maintenant

    C'est bien, il n'y a jamais de mauvais moment pour une bonne réponse. La question est - est-ce une bonne réponse? J'ai l'impression que cela pourrait utiliser plus d'amour avant que ce ne soit une * bonne * réponse. =)

    «ListIterator» pourrait-il être plus spécifique? Points bonus imaginaires pour l'utilisation de `hasNext`.

  • @sathiya: Quel type de liste voulez-vous parcourir (Dropdown..etc)?

    Voici la méthode pour obtenir des données de la table. J'espère que cela vous aidera.

    WebElement table = driver.findElement(By.xpath("your path"));
    List rows = table.findElements(By.tagName("your tagName"));
    java.util.Iterator i = rows.iterator();
    while(i.hasNext()) {
        WebElement row = i.next();
        System.out.println(row.getText());
    }
    

    Pour la liste déroulante, vous pouvez utiliser le code ci-dessous.

    List drop = driver.findElements(By.name("customerId"));
    java.util.Iterator i = drop.iterator();
    while(i.hasNext()) {
        WebElement row = i.next();
        System.out.println(row.getText());
    } 
    

    Pour les dates qui se trouvent à l'intérieur d'une table. Xpath pour table- / html / body / div [4] / div / div [2] / div [3] / div / div [5] / div [2] / div / ul / li / div / div / div / table / tbody / tr / td / table. Je ne veux pas que toutes les lignes soient imprimées, car seules les dates futures seront disponibles dans la page. Le Xpath commun pour les dates sera - "// div [@ class = 'datepicker'] / div / table / tbody / tr / td / table / tbody [2] / tr / td [@ class = '' ou @class = 'datepickerSaturday' ou @ class = 'datepickerSunday'] / a / span ". Comment imprimer les valeurs pour ce cas.

    @sathiya Pourriez-vous fournir l'url de l'application ou donner un exemple d'application afin que nous puissions contourner. Et veuillez élaborer votre question. Lorsque j'ai utilisé le code ci-dessus dans mon application, j'ai obtenu toutes les dates (qui sont toutes affichées). Résultat: 'Mo Tu We Th Fr Sa Su 24 25 26 27 28 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 2 3 4 5 6 pi

    List myList = myDriver.findElement (By.xpath ("")); System.out.println (maListe.size ()); pour (int i = 0; i

  •  List elements = driver.findElements(By.xpath("//ul[@id='ctl00_MainContent_view1Extender_SearchBarAutoComplete2_2_completionListElem']//li"));
        java.util.Iterator program = elements.iterator();
        while (program.hasNext()) {
            String values = program.next().getText();
    
            if(!values.equals("null"))
            {
                testStepPassed("Field should display all the Programs defined for the provider " +values);
            }
            else
            {
                testStepFailed("Field is not display all the Programs defined for the provider ");
            }
    
        }
    

    Qu'est-ce que cela ajoute aux réponses existantes et acceptées? Pour une réponse à une vieille question, il est utile d'ajouter plus que du code.

    Hé là JaiHind! Que fait ce code? comment est-ce mieux que la réponse acceptée?

  • Ajouter System.out.println (itr.next (). GetAttribute ("src"));

    List allLinks = driver.findElements (By.xpath ("// div [@ class = 'datepicker'] / div / table / tbody / tr / td / table / tbody [2] / tr / td [@ class = '' ou @ class = 'datepickerSaturday' ou @ class = 'datepickerSunday'] / a / span "));
    
    Itérateur itr = allLinks.iterator ();
    while (itr.hasNext ()) {
        System.out.println (itr.next () **. GetAttribute ("src") **);
    
    }
    

Licence sous CC-BY-SA avec attribution


Contenu daté avant 26/06/2020 09:53