Selenium : juste un petit tour.

Selenium : juste un petit tour. jpp

Cet article ne représente qu'un démarrage minimum avec ce produit dont les domaines d'applications sont très divers car il permet de tester un logiciel avec divers browser (Chrome, Firefox, Opera, Safari, Internet Explorer) sur divers systèmes d'exploitation (Linux, MacOs, diverses saveurs de Windows). 
Ici, tests faits sur un portable sous Linux, cela se réduit à l'IDE et deux browser sous Linux : Chromium (Chrome a refusé de fonctionner avec la version du driver dont je dispose) et Iceweasel (Firefox). 
Des "bindings" existent pour plusieurs langages ; Ruby, Python et bien sûr Java.Je n'ai testé ici que l'interface pour Python. Une version de Java 1.7, (JRE) convient parfaitement.

Depuis le site "seleniumhq.org" :

  • Charger le module Selenium IDE comme ADDON Mozilla (version testée 2.9.0)
  • Charger le "standalone server" (version testée 2.46)
  • Charger les drivers Python : Lancer l'installaton (en root !) : 
    pip install -U selenium
  • Chrome driver (32 bits Linux), charger la dernière version (ici la 2.16) :http://chromedriver.storage.googleapis.com/2.16/chromedriver_linux32.zip (ou linux64). Cette version est numerotée "v2.9.248316" à l'éxécution ???

J'ai ensuite installé tout ça dans un répertoire "Selenium" pour bien l'isoler. 
J'ai ajouté un répertoire "Config" et un répertoire "Tests". Le répertoire "Config" contient les deux fichiers de configuration (format json) pour le "Hub" et un pour le "Node".  
Ici je ne lance qu'un seul node et sur la même machine ( portable i386 avec 4G de mémoire très convenable pour les vacances !) Selenium fonctionne avec au moins deux processes (tout est dans la stand-alone-server) : 
Le "Hub" reçoit les demandes d'exécution et les transmet au "Node" (ou à un parmi les Nodes déclarés) qui dispose du pseudo-browsers demandés. Ici nous disposons d'un driver Firefox (standard du paquet) et d'un driver "chrome". Petite remarque : le driver "chrome" ne fonctionne pas avec les versions de "google-chrome" que j'ai testées mais parfaitement avec la version "chromium" fournie par Debian. 
J'ai aussi effectué quelques tests avec Opera mais sans succès pour le moment, pas de machine Windows dispo donc pas de tests Internet Explorer.

L'IDE Selenium est accessible dans le menu "Outils" de Firefox (ici IceWeasel) ou par le raccourci "Ctrl+Alt+s". 
L'enregistrement est facile et sans problèmes depuis Firefox, on peut le rejouer immédiatement pour vérifier.

Pour un premier test se "balader" un peu sur un site (j'ai utilisé un site local de test), valider ensuite le test et le sauvegarder en format "natif" puis le sauvegarder en format "Python" dans un fichier "xxxxxxxx.py".

Pour éxecuter un test créé par l'IDE : 
l'exporter en mode "python 2 unittest webdriver" sour le nom "test_remote.py" et lancer la commande : 
python test_remote.py 
Une fenêtre Firefox s'ouvre et le test s'y éxécute.

Pour exécuter les tests en mode "Webdriver" et lancer plusieurs tests simultanément in faut créer un "Hub" et au moins un "Node". 
Sauvegarde le test au format Python ( ici "Python2 unittest webdriver"). 
Le lancement ouvrira une fenêtre Firefox (par défaut) et on verra défiler les pages du test. Pour utiliser Chromium il suffit de modifier très légèrement le script. 
Partie du script généré pour Firefox :

class TEST03(unittest.TestCase): 
    def setUp(self): 
        self.driver = webdriver.Remote(desired_capabilities={ 
            "browserName": "firefox", 
            "platform": "LINUX", }); 
Après modification pour Chromium : 
class TEST03(unittest.TestCase): 
    def setUp(self): 
        self.driver = webdriver.Remote(desired_capabilities={ 
            "browserName": "chrome", 
            "platform": "LINUX", });

Cette méthode permet de vérifier rapidement le script. 

Deux scripts hyper simples et deux fichiers de configuration permettent de lancer le "Hub" et un "Node". Le script de lancement d'un "Node" peut être lancé sur plusieurs machines avec la modification de l'adresse du "Hub" dans son fichier de configuration.

Lors des tests j'ai remarqué une consommation CPU assez importante et mon brave portable ne peut guère supporter deux browser en concurrence (Un Chromium et un Firefox) en plus du serveur Web dans sa machine virtuelle KVM sans commencer à montrer des signes d'épuisement. Avec trois browsers le ralentissement est notable dans ce petit portable qui date de 2009 (voir l'article de présentation de cette machine SSDisée).