Automatiser le test d'applications Web avec Selenium RC Créer et exécuter le test

Créer le test

Nous allons créer une première classe de test, que nous allons placer dans un package "selenium".

 

package com.netapsys.selenium;

import com.thoughtworks.selenium.SeleneseTestCase;

/**
 * Classe de test de la mise en place de Selenium.
 */
public class SeleniumTest extends SeleneseTestCase {
 /** {@inheritDoc} */
 @Override
 public void setUp() throws Exception {
  setUp("http://www.netapsys.fr"); // délégation de la configuration à la classe parente
 }

 /** Ouvre la page et vérifie que le texte est bien présent. */
 public void test() {
  selenium.open(?/?); // ouverture de la page
  assertTrue(selenium.isTextPresent("Netapsys"));
 }
}

Ce test très basique permet de vérifier la présence de texte sur une page Web. Il est possible de simuler une navigation un peu plus fournie :

    * Valorisation d'un champ
   * Clic sur un bouton
   * Faire du drag&drop
   * ...

Exécution

Si nous lançons notre test directement (mvn test), nous pouvons constater qu'il est en erreur. La raison de cet échec nous est donnée dans les logs :

 Could not contact Selenium Server; have you started it on 'localhost:4444' ?

Comme vous l'aurez deviné, il faut démarrer le serveur selenium avant de lancer les tests. Pour cela il va nous falloir deux terminaux. Le premier va servir à lancer le serveur selenium (à noter que par défaut le lancement du serveur bloque l'exécution de maven) : mvn selenium:start-server. Dans le deuxième terminal nous lançons l'exécution des tests (commande mvn test).

Lors de l'exécution du test, deux fenêtres vont s'ouvrir. La première est la fenêtre de Selenium Remote Control, elle contient, entre autres, les commandes qui sont exécutées. La deuxième est le navigateur en lui-même. Nous pouvons voir les différents événements se passer : écriture du texte, clic sur le bouton...

Une fois les tests terminés, nous pouvons arrêter notre serveur (dans le deuxième terminal) : mvn selenium:stop-server