Cours du soir Selenium Lundi 7 Juin 2008 Philippe VONCKEN Licence Creative Commons:
Sommaire du cours Présentation de Selenium TP Selenium IDE TP Selenium RC partie 1 Notions sur le DOM et le cross scripting Notions sur XPath Aller plus loin avec les standards Retour d'expérience TP Selenium RC partie 2
Selenium: Vue d'ensemble Appartient au projet OpenQA Tests fonctionnels d'applications web Pilote les navigateurs Web OpenSource et Multi-plateforme License Apache 2.0
Selenium: Les composants Selenium IDE Selenium Core Selenium RC Selenium Grid
Ecrit en Javascript/DHTML Ecrit par une équipe de Thoughtworks “Selenium is designed specifically for the acceptance testing requirements of Agile teams” Principe basé sur le cross-scripting Supporte tous les navigateurs Supporte toutes les plate-formes Composant bas niveau Selenium Core
Plate-formes Supportées Windows: Internet Explorer 6.0 and 7.0 Firefox 0.8 to 2.0 Mozilla Suite 1.6+, 1.7+ Seamonkey 1.0 Opera 8 & 9 Linux: Firefox 0.8 to 2.0 Mozilla Suite 1.6+, 1.7+ Konqueror Opera 8 & 9 Mac OS X: Safari Firefox 0.8 to 2.0 Camino 1.0a1 Mozilla Suite 1.6+, 1.7+ Seamonkey 1.0 Pas encore supporté: OmniWeb
Plugin Firefox Interface graphique Enregistre, édite et debug les tests Possibilité de réutiliser les scénarios de Selenium IDE dans Selenium RC (Selenes) Ne supporte que Firefox Peut faciliter la prise en main de Selenium Selenium IDE
Copie d'écran
TP Selenium IDE Utiliser Firefox pour surfer à l'adresse suivante cliquer sur Selenium IDE cliquer sur Download cliquer sur Version 1.0 Beta 2 pour installer le plugin Suivre les instructions de l'animateur
Pilote un navigateur Web par programmation Supporte la plupart des navigateurs Web Fonctionne en client / Serveur Le programme pilote le client Selenium Le serveur Selenium pilote le navigateur Le serveur doit être installé sur la machine du navigateur à piloter Se programme dans les langages suivants: Java,.NET, Perl, PHP, Python, Ruby, Selenes, Javascript Point fort: l'intégration continue Selenium RC
S-RC: Architecture simplifié
TP Selenium RC Lancer Eclipse Ouvrir le workspace fourni par l'animateur Lancer le test Junit du projet 1 Suivre les instructions de l'animateur
Selenium Grid Extension à Selenium RC Permet de diminuer le temps global des tests parallèlise les tests sur un cluster Se programme dans les langages suivants: Java,.NET, Perl, PHP, Python, Ruby, Selenes, Javascript
S-Grid: Architecture de déployement
Piloter un navigateur avec Selenium
Les locators id : Sélectionne l’élément avec name : Sélectionne le premier élément avec identifier xpath : Sélectionne l’élément correspondant à l’expression xpath link : Sélectionne le lien qui contient le texte spécifié
Quelques exemples de locators selenium.click(“id=idOfThing”); //un id locator selenium.click(“name=nameOfThing”); //un name locator image alt text']”); selenium.click(“dom=document.images[56]” ); selenium.click(“link=Test Page For Selenium”); //un link locator selenium.click(“css=span#firstChild”); //un css locator
Méthodes communes de DefaultSelenium Pilotage open(String url) click(String locator) type(String locator, String value) select(String locator, String optionLocator) check(String locator) waitForPageToLoad(String timeoutInMilliseconds)
Méthodes communes de DefaultSelenium Récupérer les données getTitle() getText(String locator) getValue(String locator) isEditable(String locator) isElementPresent(String locator) getSelectedLabel(String locator) getSelectedValue(String locator) isChecked(String locator)
Le DOM (Document Object Model) Standardisé: W3C DOM API pour les documents HTML et XML Indépendant de tout langage de programmation Représentation structurelle du document Permet de modifier son contenu Permet de modifier sa présentation visuelle Relie les pages web aux scripts et langages de programmation
Le cross-scripting String SeleniumClient.getEval(String) Injecte du javascript dans la page chargée Permet de récupérer les valeurs de retour
XPath (XML Path Language) syntaxe non-XML Puissant et souple Permet d'adresser des parties de DOM Peut être utilisé dans des URI et des attributs XML Xpath est au DOM ce que le SQL est aux BDD
Principes de XPath Notation à cheminement //* /ns:racine/ns:toto Les axes //ns:racine/child::ns:toto /racine/toto/attribute::attribut1 Les fonctions count(/racine/toto) OU sum(/racine/valeur) /racine/toto[position()=1] /racine/toto[position()=last()]
Aller plus loin avec les standards L'utilisation de XHTML permet de valider la structure du DOM grâce au Schéma associé grâce à Selenium RC et au cross-scripting SeleniumClient.getEval() L'utilisation du vieux HTML ne permet pas ce niveau de validation de la structure des documents
Retour d'expérience Explications du contexte (Web/CICS/BDD) Structure du Fwk Maven, TagsLib, Prototype et services spring FWGE, SCTS, FWTE et FWTF Le serveur d'intégration continu continuum Le projet FWTC Les projets Finaux (640 applications) Des milliers de tests automatisés
References