selenium

J’ai découvert récemment un petit logiciel permettant de créer des scripts automatisés, afin de tester des applications web. Comment ça marche? Pour quelles utilisations? C’est tout simple, et ça s’appelle Selenium.

Ces scripts automatisés, ou plutôt ces tests d’applications, consistent:

  • à simuler des actions clavier/souris comme par exemple des simuler des clics, à remplir des champs textes, appuyer sur des touches
  • à vérifier si une donnée existe sur la page web (une image, un texte, une div spécifique, …)
  • à ouvrir des pages, les rafraichir, faire précédente/suivante, ouvrir en popup

Pour qui ?

  • Les développeurs: tester l’application web et son bon fonctionnement
  • Les analystes programmeurs: pour vérifier la conformité de l’application en fonction des besoins de l’utilisateur (exemple: le module connexion/déconnexion est-il accessible sur toute les pages?)
  • Les joueurs (gamers), qui souhaitent développer des bots pour leur jeu en ligne (exemple: travian, ogame, etc…).

Il existe 3 versions de Selenium:

  1. L’extension Firefox (celle que j’utilise le plus souvent) qui s’appelle Selenium IDE, vous pouvez créer vos tests et les enregistrer très facilement.
  2. Selenium Core, que l’on doit installer sur le serveur où se trouve l’application web
  3. Selenium Remote Control, que l’on peut utiliser sur n’importe quel navigateur web (IE, FireFox, Opéra, …) et n’importe quel système d’exploitation (Windows, Linux, Mac OS). Les langages pouvant être utilisés sont variés, on a notamment le Ruby, le Java, le .Net, le Perl et le Python.

Selenium IDE

Je vais donc vous parler de cette extension Firefox, Selenium IDE, puisque c’est la version que j’utilise :)
Une fois le plugin installé, allez dans Outils > Selenium IDE. Vous aurez des lignes à remplir, chaque ligne représente une action. Chaque action est composée d’une commande (click, open, check, wait, …), et d’une cible (une url, un chemin (xpath), ou autres selon la commande), et suivant la commande choisie nous avons aussi un champ valeur.

Voici un exemple de script (qui ne sert pas à grand chose je dois l’avouer :p ) :

commande   |   cible   |   valeur


open   |    http://www.google.com   |
type    |    xpath=/html/body/center/form/table[1]/tbody/tr[1]/td[2]/input[2]   |   webiswell
click    |    btnG   |
wait     |    3000   |
goBackAndWait    |     |
click    |   link=Confidentialité    |


Le script ci-dessus ouvre la page google.com, tape « webiswell » dans le champ Recherche grâce au chemin Xpath, clique sur le bouton btnG (en l’occurence le bouton Recherche Google), attend 3 secondes, puis revient sur la page précédente, attend la fin de chargement, puis clique sur le lien Confidentialité.

La plupart des commandes peuvent se terminer par « AndWait », comme typeAndWait, openAndWait, clickAndWait, cela veut dire que la prochaine action sera exécutée lorsque la page sera entièrement chargée.

Les commandes ayant un attribut « locator » pour cible, comme open et click, peuvent s’exécuter sur une « location » donc un lieu précis, comme par exemple les « locators » suivant:

  • une div avec un attribut id unique, ou un attribut name, pour la connaître regardez tout bêtement le code source ou utilisez le bien connu FireBug
  • un xpath (un chemin de sélection de type xml), et je trouve cela très précis et très rapide à obtenir sans regarder dans le code source, grâce à un autre plugin firefox: Xpath Checker, il vous suffit ainsi de faire un clic droit sur l’élément puis View Xpath.
  • de type string, avec la commande link. Donc un lien texte tout simplement :)
  • et d’autres! (allez voir sur la documentation officielle)

Télécharger Selenium IDE
Télécharger Xpath Checker
Télécharger FireBug