J'utilise Nightwatch.js pour tester le code de site Web étranger. J'ai utilisé cette commande:

.waitForElementVisible('input[id="inputField"]', TIMEOUT)

Cela devrait attendre que l'élément spécifié soit visible. Mais je reçois cet avertissement:

Avertissement: WaitForElement a trouvé 24 éléments pour le sélecteur "input [id =" inputField "]". Seul le premier sera vérifié.

Je pensais que l'identifiant d'un tag était unique. Comment est-il possible d'obtenir une liste de 24 éléments lors de la recherche de cet identifiant? Que puis-je faire maintenant pour sélectionner exactement l'élément dont j'ai besoin?

1
Garrarufa 17 juil. 2015 à 10:48

3 réponses

Meilleure réponse

Je pouvais maintenant résoudre le problème en sélectionnant un élément parent sans ambiguïté, puis en sélectionnant l'enfant de l'enfant de celui-ci; quelque chose comme ça:

div[id="listItem_0"] > span > input[id="inputField"]
0
Garrarufa 17 juil. 2015 à 10:47

L'identifiant d'un élément devrait être unique. Cependant, cela ne supprime pas la possibilité pour un développeur de créer autant d'éléments avec le même identifiant sur la page qu'il le souhaite.

De plus, les sélecteurs d'ID sont généralement spécifiés comme ceci input#inputField.

0
Praveen Kumar Purushothaman 17 juil. 2015 à 08:07

Comment est-il possible d'obtenir une liste de 24 éléments lors de la recherche de cet identifiant?

Parce que les gens ne comprennent pas constamment le concept de base selon lequel les id doivent être uniques. Apparemment, le site contre lequel vous testez a été écrit par une ou plusieurs de ces personnes.

Que puis-je faire maintenant pour sélectionner exactement l'élément dont j'ai besoin?

Selon la documentation, Nightwatch.js vous permet d'utiliser XPath comme alternative au CSS. Avec XPath, vous pouvez spécifier lequel d'un ensemble d'éléments à cibler, par exemple:

.useXpath()
.waitForElementVisible('//input[@id="inputField"][1]', TIMEOUT)

... utiliserait le premier, [2] utiliserait le second, etc.

Si vous ne pouvez pas le faire par l'index de l'élément dans le document, vous devrez trouver d'autres choses à ce sujet que vous pouvez utiliser pour le sélectionner (avec CSS ou XPath).

4
T.J. Crowder 17 juil. 2015 à 08:00