Selenium

Introduction

Selenium IDE est un IDE pour les tests de l’outil de tests unitaires Selenium. C’est une  extension de Firefox, elle permet d’enregistrer, d’éditer et déboguer les tests.
Selenium IDE n’est pas seulement un outil d’enregistrement : il s’agit d’un environnement de développement intégré (IDE). Voici quelques caractéristiques de Selenium IDE :

  • Facilité d’enregistrement et de lecture
  • Reconnaissance de sélection des identifiants, les noms, ou, au besoin XPath
  • Pas à pas à travers les tests
  • Debug et fixer l’arrêt
  • Sauvegarde des tests au format HTML, Java, Ruby scripts, ou tout autre format

Site officiel

Vous trouverez le site officiel de Selenium à l’adresse suivante : http://seleniumhq.org/

Tutoriel

Avant d’entamer ce tutoriel, vérifiez que vous ayez bien les prérequis :

  • Le JDK doit être installé sur votre machine.
  • Eclipse doit être installé sur votre machine. Si vous ne l’avez pas installé, référez vous à ce tutoriel.
  • Un serveur d’application doit être installé sur votre machine (Jonas, Jetty).
  • Projet client : sf-tutorial-spring-mvc

Installation de Selenium IDE sous firefox

  • Aller sur cette page : Selenium.
  • Télécharger la version 1.9.0 dans le chapitre Selenium IDE.
  • L’installation se fait et vous pourrez lancer Selenium : Outils → Selenium IDE.

Mise en place du projet client

Pour mettre en place le projet client il faut prendre le projet (qui est fourni plus haut) et le publier dans le serveur d’application.

Création du projet dans Eclipse

  • Prendre le projet suivant : projet-client, avant de commencer.
  • Lancer Eclipse.
  • On crée un nouveau projet. Pour cela on ouvre le menu File → New → Other → Maven Project.
  • La fenêtre de wizard apparaît alors. Nous allons simplement cocher a simple projet.
  • Puis sur la deuxième fenêtre après avoir fait Next, mettre sur Group Id : tutorial-selenium et dans Artifact Id : sf-tutorial-selenium.
  • On peut ensuite cliquer sur Finish.

Mise en place du projet selenium

Après avoir créé le projet il faut maintenant le configurer.
Donc on va commencer par le fichier POM.xml, il doit correspondre à ceci :

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>tutorial-selenium</groupId>
	<artifactId>sf-tutorial-selenium</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<build>
	<directory>target</directory>
	<sourceDirectory>src/main/java</sourceDirectory>
	<outputDirectory>target/classes</outputDirectory>
	<testSourceDirectory>src/test/java</testSourceDirectory>
	<testOutputDirectory>target/test-classes</testOutputDirectory>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<version>2.1</version>
			<configuration>
				<source>1.5</source>
				<target>1.5</target>
			</configuration>
		</plugin>
		<plugin>
			<groupId>org.codehaus.mojo</groupId>
			<artifactId>selenium-maven-plugin</artifactId>
			<version>2.3</version>
		</plugin>
		</plugins>
	</build>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.4</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.seleniumhq.selenium.client-drivers</groupId>
			<artifactId>selenium-java-client-driver</artifactId>
			<version>1.0.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
</project>

Faire Attention la version de selenium-maven-plugin est très importante car il y a des problèmes d’incompatibilités avec certaines version de Firefox.
Après nous allons faire la classe de Test. Pour cela il faut que dans firefox, on ouvre Selenium.
Dans la fenêtre où il y a Selenium, il faut faire : Options →Options  →Cocher Activer les fonctionnalités expérimentales.
Puis, allez dans Options → Format → Java / JUnit 4 / Remote Control.
Maintenant il doit y avoir un onglet source qui apparaît.

Puis toujours sur ce navigateur ouvrez votre application cliente en mettant ceci dans l’emplacement de l’url : http://localhost:9000/sf-tutorial-spring-mvc/form.mvc

Voici les étapes qu’il faut faire sur l’application cliente :

  • Faire valider “Une erreur doit survenir”
  • Ajouter un nom et un prénom puis faire valider. Là on doit arriver sur une nouvelle page.

Vous devriez avoir ceci comme code dans Selenium :

package com.scub.foundation.selenium.tests;
 
import com.thoughtworks.selenium.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class ExampleTest extends SeleneseTestCase {
	@Before
	public void setUp() throws Exception {
		selenium = new DefaultSelenium("localhost", 4444, "*firefox3", "http://localhost:9000/");
		selenium.start();
	}
 
	@Test
	public void testUntitled() throws Exception {
        selenium.open("/sf-tutorial-spring-mvc/form.mvc");
        selenium.click("css=input[type=\"submit\"]");
        selenium.waitForPageToLoad("30000");
        selenium.type("id=prenom", "Scub-");
        selenium.type("id=nom", "Foundation");
        selenium.click("css=input[type=\"submit\"]");
        selenium.waitForPageToLoad("30000");
	}
 
	@After
	public void tearDown() throws Exception {
		selenium.stop();
	}
}

Voici les paramètres que l’on peut mettre à la place de *firefox3 :

  • *firefox
  • *mock
  • *firefoxproxy
  • *pifirefox
  • *chrome
  • *iexploreproxy
  • *iexplore
  • *firefox3
  • *safariproxy
  • *googlechrome
  • *konqueror
  • *firefox2
  • *safari
  • *piiexplore
  • *firefoxchrome
  • *opera
  • *webdriver
  • *iehta
  • *custom

Dans le dossier src/test/java de notre projet il faut déclarer un nouveau package comme ceci : Clic droit sur le dossier New → Package et le nommer ainsi : com.scub.foundation.selenium.tests

Puis créer une classe ExampleTest qui étend de SeleneseTestCase. Dans cette classe nous allons mettre les imports et l’intérieur de la classe ci-dessus.

De plus nous allons ajouter après le premier submit ceci :

verifyTrue(selenium.isTextPresent("Champ obligatoire : veuillez saisir un prénom"));

Cela veux dire que lorsqu’on ne remplit pas les champs en cliquant sur le bouton « valider », Selenium doit vérifier qu’il y a bien ce message qui apparaît.

Voici donc à quoi doit ressembler la classe ExampleTest :

package com.scub.foundation.selenium.tests;
 
import com.thoughtworks.selenium.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class ExampleTest extends SeleneseTestCase {
	@Before
	public void setUp() throws Exception {
		selenium = new DefaultSelenium("localhost", 4444, "*firefox3", "http://localhost:9000/");
		selenium.start();
		selenium.setSpeed("1500");
	}
 
	@Test
	public void testUntitled() throws Exception {
        selenium.open("/sf-tutorial-spring-mvc/form.mvc");
        selenium.click("css=input[type=\"submit\"]");
        selenium.waitForPageToLoad("30000");
	verifyTrue(selenium.isTextPresent("Champ obligatoire : veuillez saisir un prénom"));
        selenium.type("id=prenom", "Scub-");
        selenium.type("id=nom", "Foundation");
        selenium.click("css=input[type=\"submit\"]");
        selenium.waitForPageToLoad("30000");
	}
 
	@After
	public void tearDown() throws Exception {
		selenium.stop();
	}
}

Une fois le code prêt, il faut se mettre dans le projet sf-turoriel-selenium et lancer la commande suivante dans la console :

mvn selenium:start-server

Toujours dans le projet en cours, lancez la commande suivante pour lancer le test :

mvn test

Ou pour lancer les tests avec JUnit. Voici comment faire : Clic droit sur ExampleTest → Run As → JUnit Test

Vous devriez voir deux fenêtres du navigateur s’ouvrir dont une qui fait un traitement automatique de l’application cliente.

Télécharger les sources

Les sources du projet Eclipse pour ce tutoriel sont téléchargeables sur Source Forge à l’adresse suivante.