Dans cette leçon, nous réaliserons notre premier test avec Selenium! Nous programmerons le script pour qu’il ouvre votre navigateur web, qu’il accède à Google et qu’il fasse une recherche. Nous allons d’abord importer nos modules:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

À partir de Selenium, nous importerons webdriver, puis le sous-module keys. Le premier nous permet de travailler avec le navigateur web, puis le second module d’être en mesure de générer les actions du clavier.

Puis, nous créerons un objet de type webdriver. Cette instance sera le navigateur de notre choix, soit Chrome dans notre cas. Vous pourriez créer un « path » pour le webdriver, mais dans le cadre de cette formation, nous ajouterons tout simplement le chemin absolu vers le fichier webdriver du navigateur. La ligne suivante ouvrira le navigateur pas la même occasion. Vous devrez peut-être autoriser votre application à accéder à Internet la première fois que vous utilisez votre webdriver.Important! Le caractère barre oblique inversée permet l’échappement en Python, donc, si la lettre suivant votre barre oblique inversée est un caractère qui peut être échappé, vous aurez vraisemblablement une erreur. Par exemple, si votre chemin est C:UsersDossier, vous obtiendrez une erreur d’Unicode, puisque Python interprétera U comme le début d’une commande Unicode. Pour pallier ce problème, doublez vos barres obliques inversées dans votre chemin. Le caractère échappé deviendra la seconde barre oblique inversée (Exemple: C:\Users\Dossier). Même si votre chemin n’est pas problématique, vous pouvez prendre l’habitude de doubler vos barres obliques inversées pour éviter des problèmes dans le futur. J’utiliserai malgré tout la barre oblique inversée simple dans le cadre de ce tutoriel.

driver = webdriver.Chrome("D:Mon DrivePythonTestchromedriver.exe")

Puis, pour nous rendre sur un site en particulier, nous pouvons utiliser la méthode « get » de notre driver, auquel nous passons l’adresse URL sous forme d’une chaîne de caractère (string).

driver.get("http://www.google.ca/")

Prenez note qu’il est possible que la page soit longue à charger, selon le site web, ce qui implique que vous définissiez des pauses à votre programme, sous peine que les étapes qui suivront ne puissent pas être réalisées, car le script aura été trop rapide. Pour ce faire, nous pourrions ajouter la librairie «Time » installée par défaut, puis ajouter la méthode sleep. Il existe par contre une technique intégrée à Selenium qui offre plus de possibilités pour le raclage de données. Nous verrons cette technique dans une leçon ultérieure. Pour tester Time, écrivons d’abord un petit code qui ouvre le navigateur, navigue vers Google, patiente 5 secondes, puis navigue vers la page d’accueil de l’Université de Sherbrooke. Un vidéo à la fin de cette leçon vous permettra de visualiser le résultat.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome("D:Mon DrivePythonTestchromedriver.exe")
driver.get("http://www.google.ca/")
time.sleep(5)
driver.get("http://www.usherbrooke.ca/")

Nous pourrions donc nous créer un tableau d’adresses URL, puis utiliser une boucle pour visiter tour à tour ces sites web:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time #Importation de la librairie time
urls = ["http://www.google.ca/","http://www.usherbrooke.ca/","https://www.python.org/"] #Tableau d'url
driver = webdriver.Chrome("D:Mon DrivePythonTestchromedriver.exe")
for url in urls: #Tour à tour, prendre une url, dans la variable urls
     driver.get(url) #Naviguer vers l'url
     print(url) #Permet d'afficher l'url en cours de navigation dans la console
     time.sleep(2) #Pause de deux secondes entre chaque site

Démo du code: