TP Qualité de dev.
S. Salva
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
(choisissez).
A
Créez un projet et ajoutez cette dépendance
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.27.0</version>
</dependency>
Optionnel (à faire ssi demandé) : 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.
Modifiez votre code, en faisant attention au navigateur qui est
installé sur votre station.
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 :
- driver.navigate().forward();
- driver.navigate().back();en CssSelector : chaine "h3.r a"
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.A, 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 ( à partir de 2.D).
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)