Cours du soir Selenium à Valtech

4,425 views
4,340 views

Published on

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
4,425
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
89
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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>

×