WatiN, un outil pour tester les applications web
Fabian Piau | mercredi 10 juin 2009 - 10:28Il 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 ».
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.
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.
Commentaires récents