CarmaBlog

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

WatiN, un outil pour tester les applications web

Fabian Piau | mercredi 10 juin 2009 - 11:28
  • Imprimer
  • Twitter
  • LinkedIn
  • Facebook
  • Pocket

 English version available

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.
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.
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

seo performance websiteLes meilleurs outils gratuits pour tester et optimiser une application ou un site web LaunchyLaunchy, lanceur d’applications powershellPowerShell, l’invite de commande nouvelle génération EclEmmaEclEmma – Une bonne couverture pour l’hiver
Commentaires
Pas de Commentaires »
Catégories
Programmation agile
Tags
.net, automatisation, c#, test ihm, watin
Flux rss des commentaires Flux rss des commentaires
Page 48 sur 48Première page«…102030…4445464748
Télécharger l'app CarmaBlog

Flux RSS

  • RSS Feed RSS - Articles
  • RSS Feed RSS - Commentaires

Articles les plus vus

  • Changer la langue de Firefox - 114 639 vues
  • Réaliser un sondage en ligne avec Google Forms / Drive / Docs - 60 900 vues
  • FAQ – Sondage en ligne avec Google Forms / Drive / Docs - 32 783 vues
  • Personnaliser Gnome 3 (Shell) - 28 628 vues
  • La signification d’URL, URI et URN - 15 181 vues
  • Java EE & CDI vs. Spring - 14 540 vues
  • Open Street Map, une meilleure carte que Google Maps? - 13 418 vues
  • Comparaison NoSQL: Couchbase et MongoDB - 13 326 vues
  • Firefox Nightly, Aurora, Beta, Desktop, Mobile, ESR & Co. - 12 598 vues
  • Une première approche du Camel d’Apache - 11 413 vues

Commentaires récents

  • Avatar UtilisateurLila Conseils Bonsoir Fabian, merci beaucoup, vous venez de me sauver la... – FAQ - Sondage en ligne avec Google Forms / Drive / Docs – Il y a 1 mois et 3 semaines
  • Avatar UtilisateurFabian Piau Je ne suis pas sûr à 100%, il est possible... – FAQ - Sondage en ligne avec Google Forms / Drive / Docs – Il y a 1 mois et 3 semaines
  • Avatar UtilisateurLila Conseils Bonjour, J'ai créé un formulaire et je me suis rendue... – FAQ - Sondage en ligne avec Google Forms / Drive / Docs – Il y a 1 mois et 3 semaines
  • Avatar Utilisateurcyril de falvard Je regarderais ça merci. – FAQ - Sondage en ligne avec Google Forms / Drive / Docs – Il y a 2 mois et 2 jours
  • Avatar UtilisateurFabian Piau Regardez la section "Comment peut-on empêcher une personne de répondre... – FAQ - Sondage en ligne avec Google Forms / Drive / Docs – Il y a 2 mois et 2 jours

Articles récents

  • CoderDojo Expedia à Londres - Il y a 4 mois et 3 semaines
  • Etre bénévole à Devoxx4Kids - Il y a 7 mois et 1 semaine
  • Une migration Java 11 réussie - Il y a 11 mois et 2 semaines
  • Conseils pour sécuriser votre site WordPress - Il y a 1 an et 2 mois
  • Devoxx UK 2018 – Jour 2 - Il y a 1 an et 6 mois
  • Devoxx UK 2018 – Jour 1 - Il y a 1 an et 6 mois
  • TransferWise, Revolut and Monzo, a small revolution for travelers and expats - Il y a 1 an et 10 mois
  • Autocomplétion pour Git - Il y a 2 ans et 6 mois
  • Swagger, la documentation API automatisée - Il y a 2 ans et 9 mois
  • Architecture Microservices – Les bonnes pratiques - Il y a 3 ans et 2 mois
  • FAQ – Sondage en ligne avec Google Forms / Drive / Docs - Il y a 3 ans et 7 mois
  • QCon London 2016 – Projet Jigsaw dans JDK 9 – La modularité arrive sur Java - Il y a 3 ans et 7 mois
  • QCon London 2016 – Spring Framework 5 – Preview et Roadmap - Il y a 3 ans et 8 mois
  • Les meilleurs outils gratuits pour tester et optimiser une application ou un site web - Il y a 4 ans et 4 semaines
  • Faut-il se méfier de Google? - Il y a 4 ans et 6 mois
Offre moi un café

Langue

  • Français
  • English

Suivez-moi!

Suivez-moi sur Linkedin
Suivez-moi sur Twitter
Suivez-moi sur Stackoverflow
Suivez-moi sur Github
Suivez-moi sur Rss
Link to my Contact

Abonnement email

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

Étiquettes

.net agile agilité android bash blog bonnes pratiques cache cloud conférence css devoxx docs drive développeur eclipse extreme programming firefox forms google hibernate informatique intégration continue java jug londres microservices microsoft mobilité informatique métier outil panorama partage performance plugin programmeur qcon script société spring tdd test ubuntu windows wordpress

Liens

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

Catégories

  • Evénement (15)
  • Linux (3)
  • Management (7)
  • Programmation agile (26)
  • Technologie (44)

Archives

  • juillet 2019 (1)
  • mai 2019 (1)
  • décembre 2018 (1)
  • octobre 2018 (1)
  • juin 2018 (1)
  • mai 2018 (1)
  • janvier 2018 (1)
  • mai 2017 (1)
  • mars 2017 (1)
  • octobre 2016 (1)
  • avril 2016 (2)
  • mars 2016 (1)
  • novembre 2015 (1)
  • mai 2015 (1)
  • février 2015 (1)
  • décembre 2014 (1)
  • novembre 2014 (1)
  • septembre 2014 (2)
  • août 2014 (1)
  • juillet 2014 (2)
  • juin 2014 (1)
  • avril 2014 (1)
  • mars 2014 (1)
  • février 2014 (2)
  • janvier 2014 (1)
  • décembre 2013 (1)
  • novembre 2013 (1)
  • octobre 2013 (3)
  • septembre 2013 (5)
  • juillet 2013 (1)
  • juin 2013 (1)
  • mai 2013 (1)
  • 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)
Suivez-moi sur Twitter
Suivez-moi sur Linkedin
Suivez-moi sur Stackoverflow
Suivez-moi sur Rss
Link to my Contact
Suivez-moi sur Github
 
Fabian Piau | Copyright © 2009 - 2019
Tous droits réservés | Haut ↑