web-dev-qa-db-fra.com

AngularJS Protractor - Recherche d'un élément sur une page à l'aide de la liaison Ng-Click

J'ai un bouton sur une page qui ressemble à:

<button ng-click="myFunction()" ng-show="flag">
    Submit
</button>

L'élément n'a pas d'ID.

Existe-t-il un moyen de trouver cet élément en utilisant la fonction liée à Ng-Click? Ou dois-je attribuer un ID à cet élément pour le localiser à l'aide de Jasmine/Protractor?

34
Lloyd Banks

J'ai parcouru l'API Protractor et je n'ai rien trouvé en rapport avec la recherche d'un élément via ng-click. J'ai trouvé

element(by.buttonText("Submit"));

Pas tout à fait la même chose, mais fait le travail dans mon environnement.

33
Lloyd Banks

Je viens de tester cela et cela fonctionne:

element(by.css('[ng-click="myFunction()"]'))
71
Ted Warner

Si vous souhaitez utiliser ng-show, vous pouvez essayer ceci:

element(by.Css("button[ng-show]")); // Get element with tag < button > and has ng-show attribute

ou:

element(by.Css("button[ng-show*=flag]")); // Get element with tag < button > and has ng-show attribute which contains Word flag
1
Nguyen Vu Hoang

Plutôt que d'ajouter un ID, ce que je n'aime pas faire juste pour fournir un crochet de test, j'ajouterais type="submit" Au bouton et ensuite vous pouvez rechercher By.css('[type="submit"]')

0
redOctober13