Bibliothèque Python selenium
Selenium est un outil puissant pour automatiser les opérations des navigateurs web, largement utilisé dans des scénarios tels que les tests d'applications web, l'extraction de données web et l'automatisation des tâches.
Selenium fournit des API pour divers langages de programmation pour les tests. La documentation officielle actuelle de l'API inclut C#, JavaScript, Java, Python et Ruby.
Tutoriel Selenium :https://www.example.com/selenium/
Installer Selenium et WebDriver
Installer Selenium
Pour commencer à utiliser Selenium, vous devez d'abord installer la bibliothèque selenium et télécharger le WebDriver correspondant à votre navigateur.
Installer Selenium avec pip :
pip install selenium
Après l'installation, vous pouvez utiliser la commande suivante pour vérifier les informations de version de selenium :
pip show selenium
Vous pouvez également le vérifier à l'aide de code Python :
import selenium print(selenium.__version__)
Télécharger WebDriver
Selenium nécessite un WebDriver pour interagir avec le navigateur.
Différents navigateurs nécessitent différents WebDrivers. Par exemple, le navigateur Chrome nécessite ChromeDriver. Vous devez télécharger le WebDriver correspondant au navigateur que vous utilisez et vous assurer qu'il se trouve dans le PATH de votre système.
- Chrome : ChromeDriver
- Firefox : GeckoDriver
- Edge : EdgeDriver
- Safari : SafariDriver
Choisissez un navigateur et initialisez le WebDriver :
Exemple
# Utiliser le navigateur Chrome
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
# Ou utilisez le navigateur Firefox
# driver = webdriver.Firefox(executable_path='/path/to/geckodriver')
# Ou utilisez le navigateur Edge
# driver = webdriver.Edge(executable_path='/path/to/msedgedriver')
À partir de Selenium 4, la gestion des pilotes de navigateur a changé : Selenium 4 tente de détecter automatiquement la version du navigateur installée sur le système et de télécharger le pilote correspondant. Cela signifie que les utilisateurs n'ont plus besoin de télécharger et de définir manuellement le chemin du pilote, sauf s'ils ont besoin d'une version spécifique du pilote.
Exemple
driver = webdriver.Chrome() # Si vous utilisez un autre navigateur, comme Firefox, modifiez en conséquence
Dans les environnements réseau nationaux, la détection et le téléchargement automatiques du pilote nécessitent un environnement réseau différent, il est donc recommandé de télécharger manuellement le pilote, puis de spécifier le chemin du pilote.
Dans Selenium 4, au lieu de définir directement le chemin du pilote dans webdriver.Chrome, vous le définissez en introduisant un objet Service. Cela évite les avertissements de dépréciation et garantit que le pilote se charge correctement. Par exemple :
Exemple
from selenium.webdriver.chrome.service import Service as ChromeService
service = ChromeService(executable_path="PATH_TO_DRIVER")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
Le code suivant spécifie le chemin du fichier du pilote pour obtenir le titre de la page :
Exemple
from selenium.webdriver.chrome.service import Service as ChromeService
# Définir le chemin correct du pilote
service = ChromeService(executable_path="/EXAMPLE/Downloads/chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Ouvrir un site web
driver.get("https://cn.bing.com")
# Obtenir le titre de la page
print(driver.title)
# Fermer le navigateur
driver.quit()
Utilisation de base
Initialiser WebDriver
Choisissez un navigateur et initialisez le WebDriver :
Exemple
# Utiliser le navigateur Chrome
driver = webdriver.Chrome()
# Ou utilisez le navigateur Firefox
# driver = webdriver.Firefox()
# Ou utilisez le navigateur Edge
# driver = webdriver.Edge()
Ouvrir une page web
Utilisez la méthode get() pour ouvrir une page web :
driver.get("https://www.baidu.com")
Rechercher les éléments de la page
Les éléments de la page peuvent être trouvés de plusieurs façons, par exemple par ID, nom de classe, nom de balise, etc. :
Exemple
search_box = driver.find_element("id", "kw")
# Rechercher l'élément par nom de classe
search_button = driver.find_element("class name", "s_ipt")
# Rechercher l'élément par nom de balise
links = driver.find_elements("tag name", "a")
Simuler les opérations utilisateur
Selenium peut simuler des opérations utilisateur dans le navigateur, comme cliquer, saisir du texte, etc. :
Exemple
search_box.send_keys("Selenium Python")
# Cliquer sur le bouton de recherche
search_button.click()
Obtenir les attributs et le texte d'un élément
Vous pouvez obtenir les valeurs d'attribut ou le contenu textuel des éléments de la page :
Exemple
element_text = search_box.text
Obtenir la valeur de l'attribut de l'
element_attribute = search_box.get_attribute("placeholder")
Attentes
Parfois, la page a besoin de temps pour charger. Vous pouvez utiliser une attente explicite ou une attente implicite pour vous assurer que l'élément est actionnable :
Exemple
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# Attente explicite
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "kw"))
)
# Attente implicite
driver.implicitly_wait(10)
Fermer le navigateur
Après avoir terminé les opérations, n'oubliez pas de fermer le navigateur :
driver.quit()
Automatisation web simple
Voici un exemple simple de projet Selenium utilisé pour automatiser une recherche par mot-clé et obtenir le titre de la page de résultats.
Exemple
from selenium.webdriver.common.by import By # Importer le module By
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# Définir le chemin du driver et lancer le navigateur
service = ChromeService(executable_path="/EXAMPLE/Downloads/chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
try:
# Ouvrir la page d'accueil de Baidu
driver.get("https://www.baidu.com")
# Trouver l'élément de champ de recherche
search_box = driver.find_element(By.ID, "kw")
# Saisir le contenu de recherche
search_box.send_keys("Selenium Python")
# Soumettre le formulaire de recherche
search_box.send_keys(Keys.RETURN)
# Attendre le chargement des résultats de recherche
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "content_left"))
)
# Afficher le titre de la page
print("The page title is:", driver.title)
finally:
# Fermer le navigateur
driver.quit()
Méthodes courantes de Selenium
Le tableau suivant répertorie les méthodes courantes de la bibliothèque selenium :
| Méthode | Description | Exemple de code |
|---|---|---|
webdriver.Chrome() | Initialiser une instance du navigateur Chrome. | driver = webdriver.Chrome() |
driver.get(url) | Visiter l'adresse URL spécifiée. | driver.get("https://example.com") |
driver.find_element(By, value) | Trouver le premier élément correspondant. | element = driver.find_element(By.ID, "id") |
driver.find_elements(By, value) | Trouver tous les éléments correspondants. | elements = driver.find_elements(By.CLASS_NAME, "class") |
element.click() | Cliquer sur un élément. | element.click() |
element.send_keys(value) | Envoyer une saisie clavier à un champ de saisie. | element.send_keys("text") |
element.text | Obtenir le contenu textuel d'un élément. | text = element.text |
driver.back() | Revenir en arrière dans le navigateur. | driver.back() |
driver.forward() | Avancer dans le navigateur. | driver.forward() |
driver.refresh() | Rafraîchir la page actuelle. | driver.refresh() |
driver.execute_script(script, *args) | Exécuter un script JavaScript. | driver.execute_script("alert('Hello!')") |
driver.switch_to.frame(frame_reference) | Basculer vers l'iframe spécifiée. | driver.switch_to.frame("frame_id") |
driver.switch_to.default_content() | Revenir au document principal. | driver.switch_to.default_content() |
driver.quit() | Fermer le navigateur et quitter le pilote. | driver.quit() |
driver.close() | Fermer la fenêtre actuelle. | driver.close() |