CarmaBlog

Agilité, Développement Java, Nouvelles technologies et plus…
  • rss
  • Accueil
  • Management
  • Programmation agile
  • Technologie
  • Linux
  • Evénement
  • Contact
  • A propos de l'auteur
  • English
  • Francais

WatiN, un outil pour tester les applications web

Fabian Piau | mercredi 10 juin 2009 - 10:28
685 vues
  • Twitter
  • Facebook
  • Google +1
  • LinkedIn

Il y a quelques jours, j’ai découvert une nouvelle catégorie d’outils qui permet de tester les applications web.

WatiN (prononcez “what-in”) est un framework .NET d’automatisation.

En utilisant WatiN et en programmant un peu, vous n’aurez plus qu’à lancer un simple programme pour être capable de surfer sur Internet sans avoir besoin de surfer! Etrange? Voici quelques explications.

Pourquoi n’automatiserez-vous pas votre vie de tous les jours? Les choses et routines que vous avez l’habitude de faire quand vous vous connectez à Internet.

Ce framework reproduit, action par action, le scénario que vous avez programmé. Les actions pouvant être automatisées sont variées: un clic sur un bouton, la sélection d’une valeur dans une liste, la prise d’une copie d’écran de la page web en cours, l’enregistrement de la page, etc.

Le langage de programmation utilisé est le C#. Si vous êtes familier avec la programmation Java, C# ne devrait pas être trop dur à prendre en main. On y retrouve les notions de la programmation objet et un langage similaire.

N’étant pas un adepte de Microsoft et utilisant Eclipse couramment, je dois admettre que Microsoft Visual Studio est un très bon produit. Après 2 ou 3 jours, vous le prenez en main facilement et créez des scénarios WatiN un peu plus complexes (que ceux que l’on va voir dans l’article).

Techniquement, pour “trouver” les boutons, listes et autres éléments HTML, WatiN navigue dans la structure HTML de la page web (les balises).
WatiN peut interagir avec beaucoup d’éléments HTML (voir la liste complète ici).
WatiN peut identifier ces éléments par leur id, nom, classe, texte, url, valeur, style… Cela dépend du code de la page à tester.

Pour bien comprendre, voici notre premier exemple:

public void login()
{
   // Ouvrir une nouvelle fenêtre Internet Explorer
   // et aller sur un site sécurisé
   ie = new IE("http://www.my-secured-website.com/login.php");

   // Trouver le champ texte username et saisir "toto"
   ie.TextField(Find.ByName("username")).TypeText("toto");

   // Trouver le champ texte password et saisir "titi"
   ie.TextField(Find.ByName("password")).TypeText("titi");

   // Selectionner la base de données
   ie.SelectList(Find.ByName("userDb")).SelectByValue("db2");

   // Cliquer sur le bouton de login pour se connecter
   ie.Button("loginId").Click();
}

Cette fonction automatise la connexion à une application web.

Voici maintenant le code HTML de la page web testée (login.php):

<html>

<head>
</head>

<body>
    <table>
        <tr>
            <td width="100">User Name</td>
            <td>
                <input value="" maxlength="50" name="username" type="text">
            </td>
        </tr>
        <tr>
            <td>Password</td>
            <td>
               <input maxlength="50" name="password" type="password">
            </td>
        </tr>
        <tr>
            <td>Database</td>
            <td>
                <select name="userDb">
                  <option selected value="#">Select a database</option>
                  <option value="db1">DataBase 1</option>
                  <option value="db2">DataBase 2</option>
                  <option value="db3">DataBase 3</option>
                  <option value="db4">DataBase 4</option>
                </select>
            </td>
        </tr>
        <tr height="30"><td></td></tr>
        <tr>
            <td>
                <input name="login" id="loginId" type="button" value="Login">
            </td>
        </tr>
    </table>
</body>

</html>

Qu’est ce qui se passe pendant l’exécution?

WatiN ouvre Internet Explorer, va à l’URL spécifiée, cherche le champ texte nommé “username” et saisit la chaîne “toto”. Il fait de même pour le champ contenant le mot de passe.
Ensuite, il sélectionne une base de données dans la liste nommée “userDb”. Finalement, il soumet le formulaire en cliquant sur le bouton identifié par “loginId”.

Login page

A cette étape, WatiN va sélectionner la base de données et connecter l’utilisateur.
WatiN applique une couleur jaune sur les éléments avec lesquels il est en train d’interagir (effet de clignotement).

Dans l’exemple, on utilise Internet Explorer (ie) mais WatiN supporte aussi le navigateur Firefox.

Vous pouvez utiliser “WatiN Test Recorder tool” pour générer du code compatible avec WatiN. Lien ici.
Vous aurez peut-être besoin de modifier légèrement le code généré pour effectuer quelques optimisations, mais ce sera déjà un bon point de départ.

Watin Test recorder Demo

Enfin, un deuxième et dernier exemple : une recherche sur Google (3 lignes de code sont nécessaires)

// Ouvrir une fenêtre Internet Explorer
// et aller sur Google
IE ie = new IE("http://www.google.com");
 
// Trouver le champ texte q et saisir "comment utiliser watin"
ie.TextField(Find.ByName("q")).TypeText("comment utiliser watin");

// Cliquer sur le bouton de recherche
ie.Button(Find.ByName("btnG")).Click();

L’exemple s’arrête ici mais, on peut imaginer un traitement sur les résultats.

Articles similaires

LaunchyLaunchy, lanceur d’applications
Commentaires
1 Commentaire »
Catégories
Programmation agile
Tags
.net, automatisation, c#, test ihm, watin
Flux rss des commentaires Flux rss des commentaires
Page 1 sur 11

Langue

  • Français
  • English

Articles les plus consultés

  • Changer la langue de Firefox - 18 937 vues
  • Java EE & CDI vs. Spring - 10 096 vues
  • Personnaliser Gnome 3 (Shell) - 8 242 vues
  • Firefox Nightly, Aurora, Beta, Desktop, Mobile, ESR & Co. - 6 041 vues
  • Extensions WordPress de CarmaBlog - 5 381 vues
  • Open Street Map, une meilleure carte que Google Maps? - 3 144 vues
  • Ce fichier est actuellement utilisé, vous ne pouvez rien y faire… Merci Windows ! - 2 912 vues
  • Belbin – Théorie des rôles dans une équipe - 2 398 vues
  • Réaliser un sondage en ligne avec Google Docs - 2 080 vues
  • Changer le splash screen d’Eclipse en quelques secondes - 2 019 vues

Tags

bash tdd hiberner gestion des configurations jquery intégration continue build formation eclipse éjecter mobilité informatique c# ubuntu partage wordpress jug script chrome nantes ebook windows 7 blog ic nosql plugin moteur de recherche de documents test unitaire extreme programming itil cloud fosdem extension docjax java disque dur test démonter agile bonnes pratiques outil watin windows seven google mongodb agilité firefox automatisation .net wave raccourci

Articles récents

  • Saisissez l’opportunité de suivre un cours sur la Gamification mardi 2 avril 2013
  • Comparaison NoSQL: Couchbase et MongoDB vendredi 8 mars 2013
  • IconFinder, la recherche d’icônes efficace vendredi 1 mars 2013
  • Retour sur Fosdem 2013 mercredi 20 février 2013
  • Fosdem, une conférence vraiment libre lundi 28 janvier 2013
  • Formation en ligne gratuite sur MongoDB mardi 1 janvier 2013
  • Découvrez Maxthon mardi 11 décembre 2012
  • Eteindre, mettre en veille ou hiberner son ordinateur? dimanche 9 décembre 2012
  • Une version mobile de votre Blog WordPress dimanche 28 octobre 2012
  • Réaliser un sondage en ligne avec Google Docs lundi 24 septembre 2012
  • Open Street Map, une meilleure carte que Google Maps? mercredi 25 juillet 2012
  • Une première approche du Camel d’Apache vendredi 11 mai 2012
  • Ce fichier est actuellement utilisé, vous ne pouvez rien y faire… Merci Windows ! dimanche 22 avril 2012
  • Personnaliser Gnome 3 (Shell) jeudi 15 mars 2012
  • Offrez un petit coup de jeune à votre application – CSS mercredi 15 février 2012

Flux RSS

RSS Feed RSS - Articles

RSS Feed RSS - Commentaires

Abonnement via Email

Saisissez votre adresse email pour être informé des nouveaux articles.

Liens

  • Agile Nantes
  • Blog Ippon Technologies
  • Blog Netapsys
  • Blog Xebia France
  • Blog Zenika
  • Coursera
  • Developpef
  • Le Touilleur Express
  • Les Cast Codeurs Podcast
  • new Blog( perso );
  • OCTO talks !
  • The Coder's Breakfast

Suivez-moi!

Suivez-moi sur TwitterSuivez-moi sur LinkedInSuivez-moi sur Google+Suivez-moi sur About.meSuivez-moi sur SlideShare

Catégories

  • Evénement (9)
  • Linux (3)
  • Management (4)
  • Programmation agile (11)
  • Technologie (26)

Archives

  • Avril 2013 (1)
  • Mars 2013 (2)
  • Février 2013 (1)
  • Janvier 2013 (2)
  • Décembre 2012 (2)
  • Octobre 2012 (1)
  • Septembre 2012 (1)
  • Juillet 2012 (1)
  • Mai 2012 (1)
  • Avril 2012 (1)
  • Mars 2012 (1)
  • Février 2012 (1)
  • Janvier 2012 (2)
  • Décembre 2011 (1)
  • Novembre 2011 (2)
  • Octobre 2011 (2)
  • Septembre 2011 (1)
  • Juillet 2011 (1)
  • Juin 2011 (2)
  • Avril 2011 (1)
  • Mars 2011 (1)
  • Février 2011 (1)
  • Janvier 2011 (2)
  • Novembre 2010 (2)
  • Septembre 2010 (1)
  • Août 2010 (1)
  • Juillet 2010 (1)
  • Juin 2010 (1)
  • Mai 2010 (1)
  • Avril 2010 (1)
  • Mars 2010 (1)
  • Février 2010 (1)
  • Décembre 2009 (1)
  • Novembre 2009 (1)
  • Octobre 2009 (2)
  • Septembre 2009 (2)
  • Août 2009 (3)
  • Juillet 2009 (1)
  • Juin 2009 (2)
rss Flux rss des commentaires get firefox
Fabian Piau | Copyright © 2009 - 2013
Tous droits réservés | Haut ↑