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](https://www.eni-training.com/download/a4b72fa1-61d9-4318-9a73-fe3bbb687e89/images/05EI01.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
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.