Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Les 22 & 23 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !

L'exécution sur plusieurs navigateurs simultanément

Limite de notre approche actuelle

Jusqu’à présent, nos tests fonctionnels ne prennent en compte qu’un seul navigateur. Or nous savons que les navigateurs n’ont pas tous le même comportement ni le même interpréteur JavaScript.

Nous pourrions tout à fait écrire un test par navigateur, mais cela ne serait pas logique en programmation et encore moins une bonne pratique.

Pour lancer nos tests avec un seul script et sur plusieurs navigateurs, nous allons utiliser les spécificités de pytest et non de Selenium.

Il nous suffit en effet de paramétrer notre driver Web au moment de la création de la fixture de nos tests.

Mise en place et implémentation

Reprenons nos deux applications de démonstration : multipage et OnePage. Nous souhaitons maintenant lancer nos tests avec Mozilla Firefox et Google Chrome.

Pour ce faire, nous commençons par ajouter des paramètres à @pytest.fixture pour lui indiquer les différents navigateurs dont nous voulons une instance :

@pytest.fixture(params=[webdriver.Chrome(), webdriver.Firefox()]) 

Ensuite, nous devons placer un paramètre nommé request dans notre fonction de fixture pour récupérer ces différentes valeurs.

def homepage(request) : 

Il nous suffit de récupérer les instances des navigateurs grâce à ce dernier paramètre dans le code :

request.param.get("http://localhost:8888/chapitre9-multipages/") 

Voici notre test de l’application multipage tournant sur Google Chrome et Mozilla Firefox :

import pytest  
from selenium import webdriver  
from homepage import HomePage  
from connectedpage import ConnectedPage  
   
@pytest.fixture(params=[webdriver.Chrome(), webdriver.Firefox()]) 
def homepage(request) :  
    from selenium import webdriver  
    from homepage import HomePage  
    request.param.get("http://localhost:8888/chapitre9-multipages/") 
    homePage = HomePage(request.param)...

Exercice

Reprenez les deux tests de l’exercice du chapitre Le design pattern Page Object Model et modifiez-les en les lançant sur plusieurs instances de navigateurs simultanément.