100% ont trouvé ce document utile (1 vote)
21 vues59 pages

Formation Selenium : Automatisation des Tests

Transféré par

anoir.belainouss
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
21 vues59 pages

Formation Selenium : Automatisation des Tests

Transféré par

anoir.belainouss
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

AUTOMATISATION DES TESTS

FORMATION SELENIUM

© 2018 Sogeti. All rights reserved. 1


© 2018 Sogeti. All rights reserved. 2
© 2018 Sogeti. All rights reserved. 3
Sommaire
 Introduction à l’automatisation
• Pourquoi et à quel niveau automatiser?
• Bénéfices et coûts de l’automatisation
• les caractéristiques d’une bonne automatisation
• Process de l’automatisation dans un projet

 Présentation de SELENIUM
• Automatiser un site WEB (identifier les balises HTML et les manipuler)
• Le client SELENIUM (Java, Python)
• Le WEBDRIVER (chromedriver, geckodriver)
• Commande utiles sur Java Selenium
• Exemples
 Inspecter les élément WEB (locators)
 Installation

© 2018 Sogeti. All rights reserved. 4


Sommaire
 Exercices Selenium
• Exercice classique. (Accéder à [Link])
• TestNG / Maven
• Assetion Annotation TestNG
• Page Object Model / PageFactory
• Création de variables, instructions, conditions, boucles, vérifications
• Les rapports LOGS/REPORTS
 Présentation de l’application LambdaTest
• Ecrans
• Fonctionnalités
• Implémentation Page Factory

© 2018 Sogeti. All rights reserved. 5


Sommaire

 Exercices sur différents cas de tests à automatiser


 Autres éléments
• Présentation GIT
• Présentation Jenkins

© 2018 Sogeti. All rights reserved. 6


Introduction à
l’automatisation

© 2018 Sogeti. All rights reserved. 7


Introduction à l’automatisation

 Pourquoi automatiser ?

© 2018 Sogeti. All rights reserved. 8


 Pourquoi automatiser ?
Plus les bugs sont détectés tôt et moins il
est couteux de le corriger
 Tester plus vite

PROD
 Tester plus tôt

Expression des besoins


Coût du
changement

Analyse & design


 Tester plus souvent

Tests
 Fiabiliser le périmètre et les cas réellement testés

DEV
 Eviter les erreurs de test

 Eviter la lassitude du testeur à rejouer systématiquement les TNR

 Réduire les efforts et les couts des campagnes manuelles de TNR Temps

Qualité

Projet

Coût Délai
© 2018 Sogeti. All rights reserved. 9
 Pourquoi automatiser ?

Résultat de
test

Testeurs
Envoyer le
résultat

© 2018 Sogeti. All rights reserved. 10


 Pourquoi automatiser ?

C'est ennuyant ! je dois


faire le même processus
encore et encore avec
plusieurs jeux de
données, alors qu’il n'y
a pas de changement
dans l'application.

© 2018 Sogeti. All rights reserved. 11


 Pourquoi automatiser ?

Objectifs

Réutilisabilité des Libération du


tests et le gain de temps des
temps testeurs à la
Livraison d’une application réalisation
moderne et robuste ayant le d’autre
minimum possible de défauts et tâches
répondant aux exigences de la
MOA.

Exactitude livraison
des d’une
résultats application
des tests moderne et
12 © 2018 Sogeti. All rights reserved. 12
 Pourquoi automatiser ?

Incroyable ! Maintenant,
je n'ai plus besoin de
faire le même processus
avec des jeux de
données différents. Tout
est géré par l'outil lui-
même. Même le temps
d'exécution est trop
rapide

© 2018 Sogeti. All rights reserved. 13


Introduction à l’automatisation

 A quel niveau on automatise ?

© 2018 Sogeti. All rights reserved. 14


Introduction à l’automatisation
Niveaux de tests
 A quel niveau on automatise ?

Les tests unitaire : tester les composants


Tests
Les tests d’intégration : tester les interactions entre les composants, les systèmes. Systèmes

Tests de d’Intégration
Les tests systèmes : tester les fonctionnalités du système
Tests de composants

 L’automatisation est à réaliser à tous les niveaux.

L’éffort étant réalisé par le bas (plus rapide à exécuter et moins couteux à développer)
Tester séquentiellement les différentes couches de bas en haut.

Lorsque nous automatisons les tests WEB avec SELENIUM, nous testons l’Interface Utilisateur (UI)
Nous automatisons les Tests fonctionnels (Non-Regression)

© 2018 Sogeti. All rights reserved. 15


 Bénéfices et coûts de l’automatisation

Bénéfices :

 Réduction du coût (calcul de ROI)


 Possibilité de dérouler les tests de façon régulière
 Eviter les erreurs dues au facteur humain
 Eviter la lassitude des testeurs par le jeu perpétuel des tests de non régression (confort)

Coûts :

 Mise en place infrastructure


 Montée en compétence sur l’outil
 Elaboration et maintenance des scripts

Introduction à l’automatisation Comparaison de différentes solutions © 2018 Sogeti. All rights reserved. 16
Introduction à l’automatisation

 Phases préparatoires aux projets de développement des tests automatisés


 Cycle en V

 Mode Agile

© 2018 Sogeti. All rights reserved. 17


Introduction à l’automatisation

 Phases préparatoires aux projets de développement des tests automatisés


 Cycle en V
1. Opportunité à l’automatisation (Qualité, Budget, Application pérenne, fréquence des livraisons, Environnement stable, fiabilité des données,
documentations / spécifications, référentiel de tests)
2. Choix de l’outil(s) (en fonction de : technologie, langage, fonctionnalités, cout, support, communautés, contraintes environnement client:
installation / utilisation / accès)
3. Preuve de concept : POC (faisabilité technique, gestion des données de test)
4. Périmètre éligible (identifier et définir une complexité)
5. Estimation des charges (abaques)
6. Chiffrage (dispositif ressources, TJM)
7. Calcul de ROI (rentabilité à N itération)
8. Devis du projet d’automatisation
9. Planning (dispositif ressources)

 Mode Agile
• Le développement des tests automatisés est obligatoire, il s’intègre dans les sprints
• Le testeur fonctionnel est intégré à l’équipe de développement
• Les tests unitaires sont réalisés pendant le développement de l’application par des méthodes BDD, TDD
• Les tests SELENIUM sont souvent réalisés avec un sprint de retard
• 80% des tests sont développés en test unitaire (vérifier les règles de gestions), les tests SELENIUM se focalisent à tester les grandes
fonctionnalités (parcourts utilisateurs, cas nominaux)

© 2018 Sogeti. All rights reserved. 18


Introduction à l’automatisation

 Quelles sont les caractéristiques d’une bonne automatisation ?

 Au niveau de son utilisation générale

 Au niveau de son implémentation

 Au niveau de l’exécution des tests

© 2018 Sogeti. All rights reserved. 19


Introduction à l’automatisation

 Quelles sont les caractéristiques d’une bonne automatisation ?

 Dans son utilisation générale, il doit comporter des principes de


• Maintenabilité (lié aux méthodes de développement)
• Utilisabilité (capacité à être compris, appris, utilisé, attrayant, code complexe documenté)
• Robustesse (lié à la bonne gestion des données en phase avec la cinématique du test, de la stabilité de l’environnement, de la cohérence des données
d’environnement , de la méthode d’identification et de la synchronisation des objets à manipuler)
• Fiabilité (robustesse, confiance du test en fonction des points de vérification)
• Performance (performance de l’application, synchronisation des objets à manipuler)
• Portabilité (lié à l’architecture de l’outil de test mis en place)
• D’efficacité (lié à l’architecture, aux méthodes)
 L’implémentation des tests automatisés doit
• Etre configurable (règles d’arrêt en cas d’échec)
• Etre structuré, modulaire en différents niveaux de développement
Toutes ces caractéristiques
• Etre indépendant de l’environnement et de ces données permettront de réduire la charge de
 Dans l’exécution des tests développement, de maintenance et
• Le mode d’exécution doit être simple d’utilisation des tests automatisés.
• La sélection de l’environnement doit être simple
• La sélection des tests doit être simple
• Les rapports d’exécution sont exploitables pour analyse
• Chaque rapport d’exécution doit être historisé

© 2018 Sogeti. All rights reserved. 20


 Gestion du jeu de données
 Les méthodes de gestion du jeu de données

Gestion dans le code Création par l’automate Fichier contenant les données Requêtage en BDD
statique dynamique statique dynamique
Avantages • Facilité de mise en place • Maitrise de la donnée d’entrée • Données facilement modifiables. • Les données sont directement en
• Lisibilité du code rapide • Stabilité du processus, on • Gestion des données centralisée. phase avec l’environnement.
maitrise les conditions initiales • Améliore la variabilisation. • Rapidité de récupération des
• Possibilité de Data Driven : itération données.
des cas.

Inconvénients • La donnée n’est pas • Si la fonctionnalité de création • Avoir un lieu de stockage commun. • Nécessite des droits d’accès à la
variabilisée. n’est pas disponible ou a un • Fichiers pouvant être complexe. base (ouverture de flux,
• Duplication du code. dysfonctionnement, nous ne • Nécessite que les scripts fassent un habilitations).
• Maintenance fastidieuse. pouvons plus vérifier l’objectif contrôle des données pouvant être • Requête pouvant être compliquée.
principal de notre test. saisie par un tiers. • Risque de ne pas trouver le JDD
• Création de code supplémentaire adéquat (avoir une environnement
• Augmentation de la durée de la proche de la production)
campagne de test

Quand • Solution à ne pas trop • Solution fréquemment utilisée. • Solution fréquemment utilisée. Solution à conseiller si possibilité
l’appliquer ? utiliser, sauf si il n’y a pas Privilégier la création par via d’accès.
de contraintes sur la d’autres interface (exemple les
donnée. WS, création plus rapide)

• Calculer une donnée lors de l’exécution.

Exemple à chaque exécution de mon test, je souhaite que mon code calcule la date de début de mon contrat à date du jour + 5 jours.
Je peux mettre en statique dans mon JDD dateContrat = ${dateAdd(now+5J)}
Et j’implémente dans le code que toutes les données commençant par un $ auront un traitement particulier qui dans ce cas sera d’utiliser une fonction
dateAdd.

Introduction à l’automatisation Comparaison de différentes solutions © 2018 Sogeti. All rights reserved. 21
Introduction à l’automatisation

 Démarche de développement des tests automatisés

© 2018 Sogeti. All rights reserved. 22


Introduction à l’automatisation

Les étapes de cartographie,


 Démarche de développement des tests automatisés matrice, factorisation des étapes
sont fortement simplifiées si les
tests sont produits par du
MODEL BASED TESTING
1. Montée en compétence fonctionnelle

2. Analyse du périmètre de test à automatiser

3. Vérifier qu’il existe une bonne stratégie en terme de jeu de données

4. Cartographie des fonctionnalités (avoir une vue d’ensemble, et un regroupement des tests)

5. Matrice Test / fonctionnalités (s’organiser, prioriser et suivre notre développement)

6. Validation manuelle du test (compréhension des étapes, préparation / validation des données)

7. Spécification des étapes réutilisables (créer des keyword sur la base d’étapes réutilisables pour les test)
8. Développement des étapes réutilisables (Keywords Fonctionnels) + Développement de fonctions techniques (Keywords Techniques)

9. Développement des tests (assemblage des keywords + valorisation + vérifications spécifiques)

10. Exécution / Validation (tester sur un second environnement, tester sur un navigateur différent)

© 2018 Sogeti. All rights reserved. 23


Diagramme démarche de l’automatisation des tests

© 2018 Sogeti. All rights reserved. 24


Introduction à l’automatisation

 Quelles sont les principales causes d’arrêt de mon test automatisé ?

© 2018 Sogeti. All rights reserved. 25


Introduction à l’automatisation

 Quelles sont les principales causes d’arrêt de mon test automatisé ?

Constats Solutions

L’environnement n’est pas stable on espère que c’est occasionnel car ce point était demandé en prérequis

Les données d’environnement sont corrompues on espère que c’est occasionnel car ce point était demandé en prérequis

Mes données de test ne fonctionnent plus il y a un problème que je n’avais pas identifié, je revois ma copie

Mon script plante à tord sur la manipulation d’un j’ai un problème d’identification ou de synchro d’objet, je revois ma copie
objet
Mon script plante suite à une évolution je maintiens mon script, j’essaye de voir si je peux anticiper la prochaine fois

Mon script plante car il y a une anomalie c’est l’objectif de mes tests

Il est très important d’avoir un historique de ces différents problèmes afin de s’améliorer en continu
Un outil comme le TestResultAnalyser de Jenkins permet d’afficher simplement l’historique des statuts de chaque test
© 2018 Sogeti. All rights reserved. 26
Quelle stratégie pour mettre en place les tests automatisés ?

1- Les parcours classiques d’un client

© 2018 Sogeti. All rights reserved. 27


2- Les scenarios et modules critiques

© 2018 Sogeti. All rights reserved. 28


3- Les fameux CRUD

Le CRUD (create, read, update, delete) est surtout connu du coté des développeurs. Les tests de CRUD sont souvent
effectués au niveau des tests unitaires Back End

© 2018 Sogeti. All rights reserved. 29


Introduction à l’automatisation

 Process de l’automatisation dans un projet

gérer le cycle
Lancement du
de vie des
test
applications

Importer Lancer le
Rédiger le
critère Rédiger Cas test Rapport de
script du
d’acceptatio de test Et résultat test
test
n du test

Définition des
Le Reporting se fait
cas test Rédaction des automatiquement
script sur JAVA grace à l’outil
SELENIUM TESTNG
© 2018 Sogeti. All rights reserved. 30
Présentation de SELENIUM

Automatiser un site WEB (identifier les balises

HTML et les manipuler)

Le client SELENIUM (Java, Python)

Le WEBDRIVER (chromedriver, geckodriver)

Le GRID SELENIUM

© 2018 Sogeti. All rights reserved. 31


Automatiser une application WEB

 Fonctionnement

L’automate simule les actions clavier / souris


 Il est nécessaire de pouvoir identifier les objets à manipuler
 Les principales actions sont la saisie et le click
 D’autres actions sur les objets permettront de contrôler les données affichées

L’automate doit pouvoir se lancer sur différents navigateurs


• Chrome, Firefox, Internet Explorer, Edge, Opera, Safari

© 2018 Sogeti. All rights reserved. 32


Présentation de SELENIUM

Développement des tests Exécution des tests


L’exécution se fait :
SELENIUM supporte plusieurs langages
En local si on instancie le WebDriver
A distance si on instancie le RemoteWebDriver (Mode GRID)
Le choix du navigateur se fait par les Capabilities
Chaque navigateur a besoin de son Driver
Chromedriver, geckodriver(Firefox), …

Suivant le langage choisi, il sera nécessaire de coupler


SELENIUM à un Framework de Test
SELENIUM GRID = HUB + NODES(driver + browser)

Le Framework de Test permettra de définir le fonctionnement


de l’automate en utilisant les annotations
@before @After (suite, test, class, method)
Les Assert pour les vérifications

© 2018 Sogeti. All rights reserved. 33


Présentation du WEBDRIVER

Développement des tests

Les drivers chromedriver / geckodriver sont des serveurs d’API REST qui implémentent les ressources suivantes
[Link]

On peut donc envisager d’automatiser des tests WEB via un client d’API REST sans utiliser le client SELENIUM
On peut envisager de développer son propre client.

Client
SELENIUM Serveur
WEBDRIVER
API REST Browser
(Chromedriver
Gechodriver)
Client API
REST

© 2018 Sogeti. All rights reserved. 34


Exemple de Script Java Selenium
package newproject; String baseUrl = "[Link]
import [Link]; String expectedTitle = "Welcome: Mercury Tours";
import [Link]; String actualTitle = "";
//comment the above line and uncomment below line to use
Chrome // launch Fire fox and direct it to the Base URL
//import [Link]; [Link](baseUrl);
public class PG1 {
// get the actual value of the title
actualTitle = [Link]();
public static void main(String[] args) {
// declaration and instantiation of objects/variables /*
* compare the actual title of the page with the
[Link]("[Link]","C:\\ expected one and print
[Link]");
* the result as "Passed" or "Failed"
WebDriver driver = new FirefoxDriver();
*/
//comment the above 2 lines and
if ([Link](expectedTitle)){
uncomment below 2 lines to use Chrome
[Link]("Test Passed!");
//[Link]("[Link]","G } else {
:\\[Link]"); [Link]("Test Failed");
//WebDriver driver = new }
ChromeDriver();
© 2018 Sogeti. All rights reserved. 35
Commandes utiles sur Java Selenium
BY Methods : Get Methods :
Variation Description Sample Commands Usage
[Link] finds elements based on the findElement([Link]("so
value of the "class" attribute meClassName")) get() Sample •It automatically opens a new browser window and
usage: fetches the page that you specify inside its
parentheses.
[Link] finds elements based on the findElement([Link]("in •It is the counterpart of Selenium IDE's "open"
driver's underlying CSS put#email")) command.
Selector engine •The parameter must be a String object.

[Link] locates elements by the value findElement([Link]("someId"))


of their "id" attribute
getTitle() Sample •Needs no parameters
[Link] finds a link element by the findElement([Link]("REGIS usage: •Fetches the title of the current page
exact text it displays TRATION")) •Leading and trailing white spaces are trimmed
•Returns a null string if the page has no title
[Link] locates elements by the value findElement([Link]("someNa
of the "name" attribute me"))

getPageSource() •Needs no parameters


[Link] locates elements that contain findElement([Link]( Sample usage: •Returns the source code of the page as a String
the given link text "REG")) value

[Link] locates elements by their tag findElement([Link]("div")


name ) getCurrentUrl() S •Needs no parameters
[Link] locates elements via XPath findElement([Link]("//html/b ample usage: •Fetches the string representing the current URL that
ody/div/table/tbody/tr/td[2]/ta the browser is looking at
ble/ tbody/tr[4]/td/table/tbody/
tr/td[2]/table/tbody/tr[2]/td[3]
/ form/table/tbody/tr[5]")) getText() Sample •Fetches the inner text of the element that you specify
usage:

© 2018 Sogeti. All rights reserved. 36


Commandes utiles sur Java Selenium
Navigate Methods : Methode de fermeture du Browser :

navigate().to() Sample •It automatically opens a close() S •Needs no parameters


usage: new browser window and
fetches the page that you ample •It closes only the
specify inside its usage: browser window that
parentheses. WebDriver is currently
•It does exactly the same
thing as the get()
controlling.
method. quit() Sa •Needs no parameters
mple •It closes all windows
usage: that WebDriver has
navigate().refresh() Samp •Needs no parameters.
le usage: •It refreshes the current opened.
page.
navigate().back() Sample •Needs no parameters
usage: •Takes you back by one
page on the browser's
history.

navigate().forward() Sam •Needs no parameters


ple usage: •Takes you forward by one
page on the browser's
history.

© 2018 Sogeti. All rights reserved. 37


FIND ELEMENT & FIND ELEMENTS

L’usage de Findelement et Findelements :


L'interaction avec une page Web nécessite qu'un utilisateur localise l'élément Web. La commande Findelemnt est utilisée
pour identifier de manière unique un (un seul) élément Web dans la page Web. Alors que la commande Findelements est
utilisée pour identifier de manière unique la liste des éléments Web dans la page Web. Il existe plusieurs façons
d'identifier de manière unique un élément Web dans la page Web, telles que ID, Name, Class Name, Link Text, Partial
Link Text, Tag Name et XPATH.

Syntaxe de Findelement :
WebElement elementName = [Link]([Link]("LocatorValue"));

Exemple :
WebElement loginLink = [Link]([Link]("//buton[contains(@id , ‘loginButton’)]"));

Syntaxe de Findelement :
List<WebElement> elementName = [Link]([Link]("LocatorValue"));

Exemple :
List<WebElement> listOfElements = [Link]([Link]("//div"));

© 2018 Sogeti. All rights reserved. 38


FIND ELEMENT & FIND ELEMENTS

Findelement VS Findelements :
Find Element Find Elements
Renvoie le premier élément s'il existe plusieurs Retourne une liste des élements WEB
éléments Web trouvés avec le même localisateur

lance l’exception NoSuchElementException si ca ne Retourne une liste vide si le locator n’existe pas
trouve pas d’elément qui matche à la recherche
demandé

Find element va seulement trouver un element pas plus Ca va trouver une collection d’element qui matche avec
le locator en input

Contient un seul elément Chaque element est indexé par un numéro


(commancant par 0)

© 2018 Sogeti. All rights reserved. 39


Autres outils d’automatisation

Appium :
L’automatisation des tests dans le domaine des applications mobiles offre des avantages indéniables, le principal étant
un gain de temps et de ressources considérable. Elle convient parfaitement aux tests de type « non régression »
(TNR), ainsi qu’aux tests de performances. Différents outils permettent d’accomplir cette tâche parmi lesquelles on
trouve APPIUM.

Qu’est-ce qu’Appium ?
Appium est un framework open source de test pour applications mobiles.
Il supporte les applications natives, web mobiles et hybrides. Il est également cross-platform (les apis fournies fonctionnent à la fois pour
les plateformes IOS et Android), ce qui permet la réutilisation d’une grande partie des tests.

Avantages :
•Différents langages sont supportés (Java, Objective-C, JavaScript, PHP, Python, Ruby, C#…).
•Cross-platform, il supporte les applications natives, web mobiles et hybrides.

•Pas besoin de modifier l’application pour la tester .


Inconvénients :
•Appium ne supporte pas les versions d’Android inférieures à 4.2.
•Le test d’application IOS en parallèle n’est pas possible mais peut être contourné avec le test cloud.

© 2018 Sogeti. All rights reserved. 40


EXERCICES

© 2018 Sogeti. All rights reserved. 41


Inspecter les élément WEB

Le XPATH

L’inspecteur Chrome

© 2018 Sogeti. All rights reserved. 42


Localisateurs

Les localisateurs dans Selenium vous permettent de localiser un élément Web sur une page Web. Il existe 8 types de
localisateurs dans Selenium.

 ID () : C’est la façon la plu courante de localiser des éléments puisque les ID sont uniques pour chaque élément.
Format : [Link] ([Link] ("idLocator"));

 Name () : [Link] ([Link] ("login");

 Nom de la classe (): [Link] (by. className(“nom de la classe”));

 Nom de la balise () : [Link] ([Link] ("input"));

 Link Text () : [Link] (by. linkText (" Text "));

 Partial Text () : [Link] ([Link] (Text"));

© 2018 Sogeti. All rights reserved. 43


 Sélecteur CSS () : les selecteurs CSS ont de nombreux formats, les plus courants sont :

Syntaxe Description / Exemple

css=tag#id • tag = la balise HTML de l'élément en


cours d'accès.
• # = le signe dièse. Cela devrait
toujours être présent lors de l'utilisation
d'un sélecteur CSS Selenium avec ID.
• id = l'ID de l'élément en cours d'accès
Exemple : css=input#login

css=[Link] • . = le signe de point. Cela devrait


toujours être présent lors de l'utilisation
d'un sélecteur CSS avec classe.

css=tag[attribute=value] • attribute = l'attribut à utiliser. Il est


conseillé d'utiliser un attribut unique à
l'élément tel qu'un nom ou un ID.
• value = la valeur correspondante de
l'attribut choisi.

css=[Link][attribute=value] css=[Link][tabindex=1]

css=tag:contains("inner text") • inner text = texte interne de element.


css=label:contains("IDENTIFIANT")
© 2018 Sogeti. All rights reserved. 44
Automatiser une application WEB

 TP : Inspecter les éléments du DOM

Sous Chrome :
Pour identifier un élément WEB
 click droit / inspecter éléments

Pour vérifier un xpath


 Crtl F dans la fenêtre du DOM / saisie du xpath

XPATH Selector
[Link]

CSS Selector
[Link]

© 2018 Sogeti. All rights reserved. 45


LE XPATH
Introduction :

A l’origine est une méthode de requêtage pour le XML, pouvant s’appliquer au HTML car ayant la même structure.

On peut aussi s’entrainer sur des sites en ligne [Link]

Principe :

Xpath=//tagname[@attribute='value']

Xpath=//baliseHtml[@propriété='valeur']
# cas particulier, en Selenium la propriété text est une fonction (en Appium Natif on utilise bien la propriété @text)

Xpath=//baliseHtml[text()='valeur’]

Contains() : peut s’appliquer sur toutes les propriétés ainsi que sur la méthode text()

Xpath=//baliseHtml[contains(text(), 'valeur')]

# cas particulier : la fonction text() récupère uniquement le texte de la balise courante, utilisez le . Pour récupérer tout le texte
de la balise courante ainsi que le texte des enfants.

Xpath=//baliseHtml[contains(. , 'valeur')]

© 2018 Sogeti. All rights reserved. 46


LE XPATH

Les opérateurs logiques :

Xpath=//baliseHtml[(@propriété='valeur’ or @propriété='valeur') and @propriété='valeur']

Le précédant, le suivant par rapport à une balise

Xpath=//balise1[@propriété='valeur']/preceding-sibling::balise2

Xpath=//balise1[@propriété='valeur’]/following-sibling::balise3

Les ancètres, le parent, les enfants, le fils

Ancestor, Parent, Child, Descendant

Si plusieurs résultats, l’index

Xpath=//balise[@propriété='valeur’][2]

© 2018 Sogeti. All rights reserved. 47


LE XPATH

EXERCICES

Sur le site : [Link]

• Trouver Xpath du boutton Register


• Trouver le XPATH du champs Email
• Trouver Xpath du lien Tutorials
• Trouver Xpath du checkbox qui permet de checker Helen Bennett

© 2018 Sogeti. All rights reserved. 48


EXERCICES

Sur le site lambatest : [Link]

1. Se connecter au site

2. Récupérer le titre de la page et l’afficher

3. Récupérer le label « cross browser testing »

4. Déclarer une variable contenant le titre attendu et vérifier s’il match bien avec le titre récupérer (bloc if else à utiliser).

5. Afficher les messages suivants : if test OK (test passed) sinon test failed.

6. Cliquer sur le link : Log In

7. Entrez un faux email et password puis vérifier le message d’erreur « Please enter a correct username and password. Note
that the password is case-sensitive “

© 2018 Sogeti. All rights reserved. 49


TestNG
C’est quoi le testNG ?

Pourquoi l’utiliser avec Selenium ?

© 2018 Sogeti. All rights reserved. 50


TestNG
C’est quoi le testNG ?

TestNG est un framework de test développé dans les lignes de JUnit et NUnit, mais il introduit de nouvelles fonctionnalités qui
le rendent plus puissant et plus facile à utiliser. TestNG est conçu pour couvrir toutes les catégories de tests : unitaires,
fonctionnels, de bout en bout, d'intégration, etc., et il nécessite JDK 5 ou supérieur.

Pourquoi l’utiliser avec Selenium ? Avantages

 Générez le rapport dans un format approprié comprenant un certain nombre de cas de test exécutés, le nombre de cas de
test réussis, échoué et ignorés.
 Plusieurs cas de test peuvent être regroupés plus facilement en fichier [Link].
 Les annotations utilisées dans les tests sont très faciles à comprendre ex : @BeforeMethod, @AfterMethod, @BeforeTest,
@AfterTest
 Le même cas de test peut être exécuté plusieurs fois sans boucles en utilisant simplement le mot-clé appelé «invocation
count ».

© 2018 Sogeti. All rights reserved. 51


TestNG
Les annotations

Annotations Description

@BeforeTest
La méthode annotée sera exécutée
avant que tous les tests de cette suite
ne soient exécutés
@AfterTest La méthode avec l’annotation sera
exécutée après l'exécution de tous les
tests de cette suite.

@Test La méthode annotée fait partie d'un


cas de test

@BeforeMethod La méthode annotée sera exécutée


avant chaque méthode de test

@AfterMethod La méthode annotée sera exécutée


après chaque méthode de test

© 2018 Sogeti. All rights reserved. 52


EXERCICES

© 2018 Sogeti. All rights reserved. 53


EXERCICES

Sur le site lambatest : [Link] refaire l’exercice précedent en ajoutant :

1. Une implémentation de TestNG sur le projet


2. Créer des Setup/Teardown
3. Remplacer les contrôles (if / else) par des assertions (les verif aussi)
4. Prendre une screenshot à la fin du test (TearDown)
5. Créer un test qui accéde seulement au site lambda (sur un autre Package)
6. Configurer un fichier TestNG pour lancer les 2 test à la fois

Maven :
• Créer un projet Maven
• Configurer le fichier [Link] de tel sorte d’ajouter les dépendance (Selenium et TestNG)
• Refaire l’exercice sur le nouveau projet Maven

© 2018 Sogeti. All rights reserved. 54


Page Object Model(POM)

C’est quoi le POM ?

© 2018 Sogeti. All rights reserved. 55


Page Object Model(POM)

C’est quoi le POM ?

Le page object model(POM) est un modèle de conception, couramment utilisé dans l'automatisation des tests, qui crée
un référentiel d'objets pour les éléments d'interface utilisateur Web. L'avantage du modèle est qu'il réduit la
duplication de code et améliore la maintenance des tests.

© 2018 Sogeti. All rights reserved. 56


Page Object Model(POM)

C’est quoi le PageFactory ?

© 2018 Sogeti. All rights reserved. 57


Page Object Model(POM)

C’est quoi le PageFactory ?

Page Factory dans Selenium est un concept de cadre de modèle d'objet de page intégré pour Selenium
WebDriver, mais il est très optimisé. Il est utilisé pour l'initialisation des objets Page ou pour instancier l'objet
Page lui-même. Il est également utilisé pour initialiser les éléments de classe Page sans utiliser
"FindElement/s".

© 2018 Sogeti. All rights reserved. 58


Implémentation POM/PageFactory

EXERCICE

Objectif : implémentation de 2 pages (Register Page, Home Page)

1. Allez sur le site [Link]


2. Vérifier le label « Cross browser testing cloud »
3. Saisir un mail valide
4. Cliquer sur le boutton « start free Testing »
5. Sur la page « register » :
1. Vérifier le label « Signup for free »
2. Vérifier le lien « sign up xith google »
3. Saisissez le name le mail et le password
4. Cocher « i agree… »
5. Cliquer sur le boutton « free sign up »
6. Vérifier le message d’erreur « please enter your phone »

• Refaire les même pages et le scénario de test avec le concept Page Factory

N.B faudrait que le projet soit un projet Maven avec l’implémentation des POM et aussi avoir à la fin un rapport Extent
Report

© 2018 Sogeti. All rights reserved. 59

Vous aimerez peut-être aussi