web-dev-qa-db-fra.com

Avertissement "Plus d'un élément trouvé pour le localisateur"

Dans l'un de mes tests, je localise un élément à l'aide d'un CSS selector:

element(by.css("ul.nav button"))

Il y a plus d'un élément correspondant à la requête, mais comme je n'ai besoin que du premier, le sélecteur me convient.

Le problème est que protractor émet un avertissement:

ATTENTION - plus d’un élément trouvé pour le localisateur By.cssSelector ("bouton ul.nav") - le premier résultat sera utilisé

Est-il possible de supprimer l'avertissement? En d'autres termes, comment puis-je informer protractor que je suis au courant du problème et que je ne souhaite plus afficher l'avertissement?


Utilisation de la version de développement protractor (installée directement à partir de la branche principale).

26
alecxe

Essayez ceci à la place:

element.all(by.css("ul.nav button")).first()

En gros, cela indique à Protractor que vous savez déjà qu'il existe plus d'un élément et que vous voulez juste le premier (comme vous l'avez dit dans votre question).

52
Isaac Lyman

L'avertissement est là pour une raison. Vous avez lié vos tests trop étroitement à vos données. Le sélecteur est trop général et vous devriez être plus précis. Soit en indiquant element(by.css("ul.nav button:nth-child(1)")) ou en définissant votre recherche différemment. Les tests de rapporteur ne sont pas censés tester le style ou la dom, ils sont censés tester la logique métier.

7
Jon

Moins de code:

$$("ul.nav button").first()
0
Yago