« Retour

Comprendre Selenium 3

Rappels sur Selenium

Créé en 2004 Selenium est un framework de tests automatisés open-source et gratuit dont le but est d'automatiser les interactions avec le navigateur et d'effectuer des checks dans les pages visitées. Très pratique pour tester les sites webs, il a inspiré de nombreux wrappers tels que Gebish, Cucumber, Serenity, Protractor, Nightwatch, Nemo... Les navigateurs pris en charge sont Firefox, Chrome, Opera, Safari et Internet Explorer. De nombreux langages sont supportés, certains bindings étant développés par l'équipe Selenium (Java, Ruby, Python, Javascript, C#), d'autres étant produits par d'autres communautés open-source (Perl, PHP, Haskell; Objective-C, R, Dart, Tcl). Le langage choisi pour développer des tests Selenium n'a aucun besoin d'être le même que celui de l'application à tester.

Au fil du temps, Selenium s'est imposé comme un standard de l'automatisation des tests open-source. Sa popularité est en constante augmentation.

 

Cet article s'adresse autant aux personnes qui souhaitent effectuer la migration vers Selenium 3 qu'à ceux qui souhaitent simplement comprendre la feuille de route du framework. Vous verrez, la migration demande peu d'efforts, mais vous découvrirez que c'est une version qui recèle de nombreuses promesses.

Comment migrer vers Selenium 3

La migration se fait relativement en douceur, toutefois voici la réponse à quelques questions que vous pourriez vous poser pour réaliser ce changement.

Quelle version de Java pour Selenium 3 ?

Adieu Java 7, Selenium 3 tourne uniquement avec Java 8+. Upgradez si besoin et si les autres dépendances de votre projet vous le permettent.

Attention, Squash TA nécessite encore Java 7. Si vous utilisez la suite Squash, il faudra patienter un peu.

Comment changer le POM Maven pour Selenium 3 ?

Si vous utilisez Maven, changez votre POM en remplaçant votre dépendance de Selenium par :

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.0.1</version>
</dependency>

Sinon, importez les jars dont vous avez besoin pour votre projet (ils sont disponibles ici).

Comment lancer Firefox avec Selenium 3 ?

Pour instancier un navigateur Firefox, il est maintenant nécessaire de faire appel à un driver externe : GeckodriverGecko étant le nom du moteur de rendu sur lequel se base Firefox (mais aussi ThunderBird, SeaMonkey...). Ce changement correspond à une nouvelle politique de gestion des drivers. Nous y reviendrons.

Téléchargez la dernière version de Geckodriver, placez le driver dans votre répertoire projet et ajoutez la ligne suivante avant l'instanciation de votre FirefoxDriver :

System.setProperty("webdriver.gecko.driver",chemin\\vers\\votre\\geckodriver.exe");

Cette façon d'instancier un navigateur est la même que celle utilisée jusqu'à présent par les autres navigateurs. Aucun changement n'est donc requis pour continuer à tester avec Chrome, par exemple.

Quelles versions d'Internet Explorer sont supportées par Selenium 3 ?

Désormais, il n'est plus possible d'exécuter des tests sur une version inférieure à IE9.

Mais au fait, pourquoi Selenium 3 ?

Une modernisation en profondeur

Nous venons essentiellement de lister les contraintes liées à la migration de Selenium 2 à 3. Les avantages ne sont pas encore visibles pour l'automaticien. Les APIs WebDriver n'ont pas significativement évolué ; du moins, aucune annonce n'a été faite à ce sujet. Le véritable intérêt de Selenium 3, c'est tout le contexte dont il est issu, et les changements qu'il annonce.

Tout d'abord, cette version correspond à une refonte et une simplification importante, qui accélèrera sans doute le rythme des prochaines évolutions. Tout un pan du projet (Selenium Core) est maintenant laissé de côté et relégué en legacy. Partant du constat que le simple JavaScript ne permet pas de tout automatiser (source), Selenium repart sur une base plus moderne.

Vers une standardisation de l'automatisation web open-source

Un aspect important à prendre en compte est le contexte de standardisation du WebDriver, étant donné qu'une spécification W3C (dont le brouillon est déjà disponible) est en cours de rédaction à ce sujet. Cette standardisation précède un transfert des responsabilité, de la communauté open-source Selenium vers les organisations fournissant les navigateurs. Cela se voit d'ailleurs dans les dernières release-notes de Geckodriver, où les évolutions font directement référence à la spécification W3C.

Cette évolution donne véritablement ses lettres de noblesse à Selenium. C'est une excellente nouvelle étant donné que les fournisseurs de navigateurs, connaissant leurs produits mieux que quiconque, seront à même de concevoir les meilleures implémentations de leurs webdrivers respectifs.

Une deuxième spécification est déjà en projet, "W3C WebDriver Level 2", qui devrait permettre à l'automaticien de résoudre un certain nombre de problèmes tout en homogénéisant les mécanismes des webdrivers. Cela impacte des actions telles que l'accès au Shadow DOM (assez casse-pied dans les projets Polymer par exemple) et les popups jusqu'alors non cliquables (par exemple la popup de demande d'autorisation de géolocalisation).

Bref, le petit monde de Selenium est en effervescence et beaucoup de bonnes choses sont à venir. Restez attentif !

Pour en savoir plus

  • Sur la spécification W3C de WebDriver : son brouillon est déjà en ligne
  • Sur la différence entre Selenium WebDriver (ou Selenium 2) et Selenium Core (ou Selenium 1) : cet article

Un avis ? Un commentaire ?

Cet espace est pour vous.