TP Qualité de dev.
S. Salva

TP5 Selenium Webdriver


1. Objectifs

Effectuer des tests d'intégration d'applications Web

Savoir utiliser Selenium Webdriver en Java, enregistrer des tests, compléter des tests, etc.


2. Installation et premier test

Selenium Webdriver est un framework qui appelle des navigateurs et utilise leurs fonctions pour tester des applications Web. Il offre d'avantage d'actions que Selenium IDE et gére mieux les pages Web dynamiques.
Selenium driver est utilisable avec plusieurs langages (PHP, C#, PHP, Java,etc) et sur plusieurs OS, notamment les Os mobiles (Android, IOS).

Nous utiliserons Java dans le cadre de ce TP avec un IDE (testé Eclipse et netbeans).

A
Créez un projet et ajoutez cette dépendance

<dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.10.0</version>
        </dependency>

Ensuite, téléchargez le driver pour Firefox (geckodriver) voir ici et enregistrez le dans un répertoire. N'oubliez pas de rendre le prog. exécutable (chmod +x ...)


B

Téléchargez le code source suivant et lancez votre premier test. Firefox derait se lancer et faire une recherche.
N'hésitez à changer le code avec d'autres sites (mais les éléments Dom devront être revus dans le code).
Regardez bien cette notion de timeout implicite et explicite. Demandez si la notion n'est pas comrpise.

Si vous avez des erreurs, regardez les logs. Vérifiez que vous avez correctement modifié le chemin d'accès à Geckodriver.

Si vous avez l'erreur "selenium com.google.common.base.Predicate cannot be resolved", pas de panique: téléchargez l'archive guava ici

Lisez attentivement les commentaires du source et survolez la documentation.

C

Tentons la même chose en passant par chrome.
Téléchargez le driver. Puis placez le dans un répertoire de votre PATH.

Puis, il faut remplacer le driver Firefox par ce dernier. Par exemple:
System.setProperty("webdriver.chrome.driver", "/Users/ssalva/Downloads/chromedriver");
driver = new ChromeDriver();

Voilà vous pouvez tester des applis sur plusieurs navigateurs de cette façon (en même temps d'ailleurs).


2. Envi de jouer à l'internaute fantôme?

A

On va reprendre le premier code source.
Ici je vous demande de le compléter pour cliquer sur le premier lien (normalement ma page perso ou utilisez la votre) et afficher le titre de la page.
Cet exercice vous demande de manipuler la structure DOM de la page web pour rechercher des éléments.Sur firefox, allez dans outils/Développement Web/Outils de Développement, et utilisez l'inspecteur. Vous devriez trouver le chemin xpath ou le sélecteur css.

Vous pouvez vous aider de l'inspecteur avec Firefox. Vous avez aussi des plugins pour Firefox faisant la même chose.

B

Pour l'instant, nous avons pas fait de test. Pourquoi ?

C


C'est pas mal mais... nous n'avons pas encore fait de cas de test.
En fait, il n'y a pas d'assertions en Selenium Webdriver.
Et il n'y en a pas besoin.
Comment faire en Java pour écrire des tests ?

Reprenez votre code précédent, et vérifiez, via un cas de test, que l'on arrive à votre page perso (ou autre de votre choix).

Rappel dépendence Junit

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.10.0 *** A VERIFIER ***</version>
    <scope>test</scope>
</dependency>


D

Codez un nouveau programme qui utilise le code précédent pour faire une recherche, afficher les résultats, cliquer sur chaque lien de la premère page et afficher le titre de la page.

N'hésitez pas à compléter avec ces commandes :

3. Screenshots

A

Vous pouvez prendre des screenshots de la page en cours via Selenium, de la façon suivante:

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
     // Now you can do whatever you need to do with it, for example copy somewhere
     try {
        FileUtils.copyFile(scrFile, new File("screenshot.png"));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

Reprenez le code de 2.B, puis prenez un screenshot de la page principale.

B

Codez un progamme qui va sur duckduckgo.com, entre votre nom dans le champ de recherche, clique sur tous les liens de la page résultat et prend un screenshot de chaque nouvelle page.

3. Test sur Google Gruyere

A

Reprenons le site Google Gruyere.


Faites un cas de test pour créer un compte, faire appel à l'URL "*URL de votre instance**/saveprofile?action=update&is_admin=True", vous delogguer, vous reloguer, et vérifier que vous avez maintenant le lien "Manage this server"

Voius venez de trouver une faille de sécurité (escalade de privilège)