J'utilise actuellement la bibliothèque Selenium2 dans un framework de robot pour automatiser certains tests Web. Actuellement, je ne parviens pas à automatiser le clic d'un bouton de connexion avec la fonction Click Element.
C'est l'élément que je voudrais utiliser:
<a class="transparentBtn loginLink ng-scope" ng-click="commonService.gigyaRaasLogin()" translate="BTN_ADMIN_LOGIN_WATCHLIST">LOGIN</a>
et ceci est le xpath si je copie depuis la console: //*[@id="menu"]/div/div[5]/div/div/div[2]/ul/li[2]/a
J'ai du mal à trouver le localisateur à utiliser si je veux cliquer sur cet élément.
Voici certaines des choses que j'ai essayées jusqu'à présent:
Click Element css=a.loginLink
Click Element link=LOGIN
Essayez de localiser css unique (1 nœud correspondant) ou essayez ceci
Wait Until Element Is Visible xpath=//*[@id="menu"]/div/div[5]/div/div/div[2]/ul/li[2]/a 10
Click Element xpath=//*[@id="menu"]/div/div[5]/div/div/div[2]/ul/li[2]/a
Je recommande d'être un peu plus flexible. La bonne approche si vous trouvez l’équilibre entre définir flexible et unique. Sinon, le plus petit changement de site rompra votre test.
L'exemple suivant doit correspondre à l'exemple précédent:
Correspond à tout lien contenant du texte LOGIN
Click Element //a[contains(text(),'LOGIN')]
Correspond à tout élément contenant du texte LOGIN
Click Element //*[contains(text(),'LOGIN')]
Correspond à tout élément où l'attribut de classe est égal à "transparentBtn loginLink ng-scope"
Click Element //a[@class="transparentBtn loginLink ng-scope"]
Vous pouvez vérifier plusieurs attributs en même temps
Click Element //a[@class='transparentBtn loginLink ng-scope' and @ng-click='commonService.gigyaRaasLogin()']
Vous pouvez utiliser contains () pour vérifier si une partie chaîne de l'attribut de classe
Click Element //a[contains(@class,'loginLink')]
Pour répondre à la question dans le titre, la bibliothèque Selenium2Library prend en charge de nombreux localisateurs différents. Le plus expressif est xpath, qui peut être utilisé pour trouver à peu près n'importe quoi. Voir la section Localisation ou spécification d’éléments dans la documentation Selenium2Library .
Dans votre cas, si vous cliquez sur un lien, click link link=LOGIN
devrait fonctionner. Si ce n'est pas le cas, il se peut que le lien se trouve dans un iframe ou qu'il soit caché par des CSS (certains frameworks comme angular et react masquent des éléments et les remplacent par leurs propres éléments)