3 votes

Comment enchaîner `element` et `element.all` ?

Le problème est très similaire à celui-ci Avertissement "Plus d'un élément trouvé pour le localisateur". : J'ai ng-repeat à l'intérieur, j'ai deux div avec ng-if sur eux, de sorte qu'il n'y a qu'un seul div est affichée. Chaque div en ng-repeat a la même classe login__cell-link .

J'ai besoin de vérifier la valeur de ce div J'ai donc choisi le bloc avec eux en utilisant des

element.all(by.repeater('item in array')).then( allElements => {
  allElements[i].element(by.className('login__cell-link')).getText();
});

Le problème est l'avertissement :

ATTENTION - plus d'un élément trouvé pour le localisateur By(css selector, .login__cell-link) - le premier résultat sera utilisé

Cette réponse https://stackoverflow.com/a/28464809/4753661 dit d'utiliser : element.all(by.css("ul.nav button")).first()

Mais je reçois une erreur :

[TypeError : allElements[i].element.all n'est pas une fonction].

Comment puis-je enchaîner element y element.all ou existe-t-il de meilleures solutions pour vérifier l'une d'entre elles ? div dans ce cas ? Je vous remercie de votre attention.

9voto

alecxe Points 50783

Utilisation .all() no .element.all() lors de l'enchaînement :

allElements[i].all(by.className('login__cell-link')).first().getText();

D'ailleurs, il n'est pas nécessaire de résoudre explicitement la promesse ici et vous pouvez l'enchaîner jusqu'au bout :

element
  .all(by.repeater('item in array'))
  .get(i)
  .all(by.className('login__cell-link'))
  .first()
  .getText();

Autopromotion éhontée : si vous voulez détecter ce type d'erreurs à temps, vous pouvez utiliser ESLint outil d'analyse statique du code avec eslint-plugin-protractor 's correct-chaining règle .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X