les applications de test ont rencontré un autre problème. J'ai besoin de cliquer sur l'élément avec le texte exact. J'ai donc trouvé une solution dans laquelle j'utilise cssContainingText et chacun, puis, si vous le souhaitez, vous devez combiner le texte et sélectionner un élément, mais je pense que cette solution est peut-être meilleure.
Deuxième question: quelque part sur stackoverflow, j'ai lu ça
element.click().then(){
dosomething;
});
causera ce «quelque chose de dos»; effectuera après clic, j'essaye ceci et cela ne fonctionne pas, comment faire cela "dosomething;" se produira après le clic;
Vous pouvez utiliser by.xpath
comme sélecteur:
Par le texte exact
element(by.xpath('.//*[.="text"]'))
Par classe css avec texte exact
element(by.xpath('.//*[.="text" and class="some-css-class"]'))
Vous pouvez trouver beaucoup d'exemples de xpath en ligne . Il y a aussi un testeur que vous pouvez utiliser.
1) Delian a la bonne réponse, mais dans de nombreux cas, le contenu de l'élément comporte des espaces supplémentaires, vous devez donc les rogner:
getElementsByText: function (text, parentXpathSelector) {
parentXpathSelector = parentXpathSelector || '//';
return element(by.xpath(parentXpathSelector + '*[normalize-space(text())="' + text + '"]'));
}
Xpath est élégant mais difficile à lire si quelqu'un d'autre a besoin de regarder le code. Je choisis souvent un élément dans un répéteur en n'utilisant que cssContainingText et chained by.css. exemple: element(by.css('.dropdown-menu')).element(by.cssContainingText('span', constants.STATUS.PENDING)).click();
bien qu'il puisse être plus lent que xpath. Je ne le pense vraiment pas maintenant. Mais managable vient en premier