Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Cours du soir Selenium à Valtech

5,057 views

Published on

Cours du soir présenté par Philippe Voncken en interne à Valtech, le lundi 7 juillet 2008.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Cours du soir Selenium à Valtech

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

×