web-dev-qa-db-fra.com

rapporteur: Comment trouver un élément avec le texte exact?

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;

8
tealang

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.

16
Delian Mitankin

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 + '"]'));
}

2) https://stackoverflow.com/a/21785088/3147680

4
Martin Sznapka

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

0
Jens Alenius