2017-07-29 3 views
1

Je veux apprendre webdriverio. je tente d'exécuter ce code:WebdriverIO: Comment correctement réitérer les éléments throus et déconnecter le getText?

client.init(). 
url('https://www.example.com'). 
elements('p').then((result) => { 
    for (i = 0; i < result.value.length; i++) { 
     (client.elementIdText(result.value[i])). 
     then((re) => console.log(re)) 
    } 
}) 

mais qui ouvre une session sur rien.

Je sais que je peux le faire en utilisant getText ('p'), mais je veux juste savoir comment le faire en utilisant des éléments ('p').

+0

'éléments ('p'). Value.forEach ((élément) => {console.log de retour (browser.elementIdText (élément.Elément) .value)})' fera-t- tour. – tehbeardedone

Répondre

2

Hope this indice vous aidera à trouver votre réponse:

let totalElements = $$('p').map((result) => { 
    return result.getText(); 
}); 
console.log(totalElements); 

Ou cette option

$$('p').forEach(function(result){ 
    console.log(result.getText()); 
}); 

Note: $$ Link

Et pour le faire à partir de votre code s'il vous plaît faire la $$, supprimez .value et remplacez la méthode par getText(). Comme il n'y a rien retourné parce que elementIdText() prendra seulement le sélecteur ID comme argument. Et <p> n'est pas un ID. Reportez-vous ici pour elmentIdText()

for(i=0; i<result.length; i++){ 
    (client.getText(result[i])). 
    then((re) => console.log(re)) 
} 
+0

Ne serait-ce pas 'elements ('p'). Value.map ((résultat) => { return result.getText(); });'? Sinon, vous obtiendrez 'TypeError: browser.elements (...). Map n'est pas une fonction'. – tehbeardedone

+0

Merci de l'avoir repéré. En ce qui concerne le code qui n'était qu'un indice pour itérer. Comme le 'elements' retournera un tableau d'objets et ensuite besoin de faire le' .value' pour récupérer cela. Donc remplacé le 'elements' avec' $$ 'qui retourne juste un tableau normal –