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
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Selenium
  3. Les manipulations du navigateur
Extrait - Selenium Maîtrisez vos tests fonctionnels avec Python
Extraits du livre
Selenium Maîtrisez vos tests fonctionnels avec Python Revenir à la page d'achat du livre

Les manipulations du navigateur

Accéder aux fonctions du navigateur

Ce chapitre se focalise sur les manipulations possibles du navigateur que Selenium nous permet de faire. Tout comme un utilisateur, nous avons accès aux commandes de la fenêtre du navigateur et à la zone de navigation.

images/05EI01.png

Zone de navigation d’un navigateur Google Chrome

Nous pouvons donc simuler un clic sur les boutons de navigation (Précédent et Suivant), changer l’URL (l’adresse du site), ainsi que manipuler la taille et la position de la fenêtre du navigateur sur l’écran, pour la réduire ou la mettre en plein écran par exemple.

Naviguer grâce à Selenium 

Une fois notre driver Web instancié, nous avons accès au navigateur correspondant et nous pouvons faire toutes les actions qu’un utilisateur peut effectuer depuis son interface et récupérer les informations concernant le navigateur exécuté.

Pour accéder à un site, il nous suffit de passer en paramètre de la méthode get l’URL de ce site :

import pytest  
from selenium import webdriver  
 
@pytest.fixture  
def browser() :  
    from selenium import webdriver  
    browser = webdriver.Chrome()  
    def finalizer():  
          browser.close()  
    return browser  
   
def testGet(browser) :  
    browser.get("https://www.editions-eni.fr/")  
   
def testUrl(browser) :  
    browser.get("https://www.editions-eni.fr/")  
    assert browser.current_url == "https://www.editions-eni.fr/"  
  
def testRefresh(browser) :  
    browser.refresh() 

Pour connaître l’URL sur laquelle se trouve le navigateur, nous avons accès à la propriété current_url du driver Web. La méthode refresh nous permet de rafraîchir...

Prendre une capture d’écran

Il est parfois intéressant d’apporter des preuves visuelles de nos tests fonctionnels. Pour cela, rien de mieux qu’une capture d’écran en temps réel !

Selenium permet de réaliser des captures d’écran avec la méthode save_screenshot. Cette méthode enregistre la capture d’écran sur disque.

from selenium import webdriver  
from PIL import Image  
  
browser = webdriver.Chrome()  
      
browser.get("https://www.google.fr/")  
  
browser.save_screenshot('screenshot.png')  
screenshot = Image.open('screenshot.png')  
screenshot.show()  
  
browser.close() 

Le script précédent réalise une capture d’écran du navigateur se trouvant sur la page d’accueil du moteur de recherche Google. Pour ce faire, nous avons volontairement choisi de ne pas utiliser Pytest pour des raisons de clarté. En effet, nous avons remarqué à la section précédente que les tests fonctionnels avec Pytest lancent un navigateur par test en premier plan, ce qui peut être désagréable pour le testeur.

Nous utilisons la librairie Pillow, avec l’import de PIL, uniquement pour visualiser la capture sans aller la chercher sur le disque. Nous obtenons la capture suivante :...

Exécuter un script JavaScript

Selenium nous donne accès à tout le navigateur, donc également à son interpréteur JavaScript. Pour exécuter un script JavaScript, il nous faut utiliser la méthode execute_script.

from selenium import webdriver  
   
browser = webdriver.Chrome()  
      
browser.get("https://www.google.fr/")  
   
browser.execute_script("window.scrollTo(0,document.body 
.scrollHeight);") 
browser.close() 

Notre script permet de descendre automatiquement en bas de la page actuelle du navigateur en faisant appel à la fonction scrollTo de l’objet JavaScript window. Nous pouvons ordonner au navigateur d’exécuter n’importe quelles instructions JavaScript et ainsi manipuler tout le DOM, comme le montre le script suivant qui efface tous les éléments du body de la page HTML :

from selenium import webdriver  
   
browser = webdriver.Chrome()  
      
browser.get("https://www.google.fr/")  
  
browser.execute_script('document.body.innerHTML = "";')  
  
browser.close() 

Avec la méthode execute_script, nous ne pouvons utiliser que du JavaScript natif.

Exercices

Nous vous laissons le choix du driver Web pour les exercices suivants (Google Chrome, Mozilla Firefox, Microsoft Edge ou Safari).

1. Exercice 1

Écrivez un script qui lance un navigateur accédant au site internet de votre choix. Pensez à fermer le navigateur à la fin de votre script.

2. Exercice 2

Écrivez un test qui vérifie que vous avez bien changé la position de la fenêtre de votre navigateur. Pensez à fermer le navigateur à la fin de votre script.

3. Exercice 3

Écrivez un test qui vérifie que vous avez bien changé la taille de la fenêtre de votre navigateur. Pensez à fermer le navigateur à la fin de votre script.

4. Exercice 4

Écrivez un script qui lance un navigateur accédant au site internet de votre choix et qui enregistre sur le disque dur une capture d’écran de ce site. Pensez à fermer le navigateur à la fin de votre script.