Selenium

Selenium est initié par ThoughtWorks qui comprend 750 collaborateurs dans 6 pays, ce sont des pionniers de l’agilité et de l’open source. L’objectif de Selenium est de réaliser des tests fonctionnels d’application web (HTML ou XML sur HTPP) ainsi que des tests de compatibilité entre navigateurs.

Selenium est open source (license Apache 2.0), c’est un project actif bien documenté (forum, wiki). Il est décomposé en trois modules :

  • Selenium core
  • Selenium remote control
  • Selenium IDE, plugin Firefox

Selenium core

Moteur en Javascript/HTML, les test s’exécutent directement dans le navigateur, le tout est compatible avec Firefox, IE, Opera et Safari. L’interface d’administration permet la visualisation des scénarii, l’exécution des tests, de débugger (à l’aide de breakpoint), d’afficher des logs ainsi que l’arbre DOM de la page testée.

Il permet l’exécution d’actions comme cliquer, saisir du texte, vérifier le contenu d’une page à l’aide d’assertions. Le scénarii est écrit en “Selenese” qui a une syntaxe très simple : tableau HTML à 3 colonnes (commande + 2 arguments).

Exemple :

JrMLab test
open /
type q jrmlab
clickAndWait btnG
verifyTextPresent Test – Php – JrM` Lab

Selenium Core permet de faire tout ce que peut faire l’utilisateur :

  • Presser/relâcher une touche, saisir du texte
  • Simple/double clic de la souris
  • Drag & drop
  • Mouvement de la souris
  • Sélectionner une pop up ou une frame
  • Édition/suppression de cookies

Il possède aussi une notion d’attente d’événement avec gestion d’un timeout.

Les inconvénients de Selenium Core :

  • Cross-Site Scripting (XSS)
    • Selenium (HTML + JS) doit être déployé sur le même serveur que l’application testée.
  • Les navigateurs doivent être correctement configurés
    • Profil potentiellement différent avant chaque exécution de test
    • Cookies existants
    • Mots de passe ou données de formulaires sauvegardés
  • Difficile à automatiser
    • Lancement du navigateur
    • Rapport d’exécution non exportable

Selenium Remote Control

Selenium RC est une application JAVA 5 qui contrôle le navigateur. Il possède deux modes :

  • automatique : lecture de scénarii au format Selenese
  • interactif : scripting des scénarii en Java, Junit, Ruby, Python, .NET, PHP

Selenium RC permet de démarrer un navigateur avec un profil vierge, il n’y aucun problème de XSS en raison d’un proxy HTPP. Il est donc automatisable pour l’intégration de contenu. Les tests en Java, Ruby, PHP sont plus complets que ceux en selenese. En effet, il est plus facile de réutiliser du code et d’avoir accès à des données non présentes dans le navigateur : informations d’une base de données pour vérifier l’intégralité de certaines données, etc.

Selenium IDE

Selenium IDE est un plugin pour Firefox. Il permet l’enregistrement d’un scénario pouvant être exécuté dans n’importe quel autre navigateur. Il permet aussi l’exécution des tests directement dans Firefox, en effet le moteur Selenium est intégré dans le noyau de Firefox (chrome), aucun problème de Cross-Site Scripting.
Selenium IDE propose aussi un debugger ainsi qu’une méthode d’exportation des tests au format Selenese, Java, Ruby, Python, .NET et PHP.

On se rend alors compte que Selenium IDE facilite l’automatisation d’écriture de tests simples réutilisables pour Selenium RC.

Installation de Selenium

Nous allons voir comment installer Selenium sous Ubuntu.

  • Installer Apache avec PHP5 (ça nous servira pour plus tard) Reportez vous ici
  • Télécharger Selenium RC ici.
  • Dezipper l’archive dans le repertoire de votre choix le mieux étant dans /opt/selenium-rc/
  • Ouvrez un terminal et placez vous dans le repertoire où vous avez dezippé l’archive.

Maintenant il ne nous reste plus qu’à tester le bon fonctionnement du serveur. Exécutez la commande suivante :

$ java -jar selenium-server.jar -interactive

Félicitations, vous venez de lancer le serveur Selenium en mode interactif, ce qui veut dire que vous allez pouvoir directement lancer des commandes à partir de votre terminal.

Nous allons tester notre installation, pour ceci lancez la commande suivante :

cmd=getNewBrowserSession&1=*chrome /usr/lib/firefox/firefox-2-bin&2=http://www.google.com

Firefox s’ouvre et laisse apparaître le debugger de Selenium. Vous devriez logiquement avoir le résultat suivant dans votre terminal (avec un n° de session différent) :

Got result: OK,7b3a771be605421fb0be772c7bed6e8f on session 7b3a771be605421fb0be772c7bed6e8f

Nous venons de récupérer le n° de session généré par Firefox, nous allons maintenant lancer une commande permettant d’atteindre la home de Google :

cmd=open&1=http://www.google.com&sessionId=7b3a771be605421fb0be772c7bed6e8f

Félicitations vous venez de lancer votre première commande Selenium …