1. Terminer la session
Comment bien terminer une session de navigateur
Alors, tu as un script génial qui collecte des données, clique sur des boutons et fait plein de choses magiques dans ton navigateur. Maintenant, il est important de bien compléter son exécution. Imagine que ton navigateur est un éléphant tranquille : tu ne peux pas juste claquer la porte et partir. Tu dois poliment et calmement fermer la session. Pour cela, utilise la méthode quit().
from selenium import webdriver
# Initialisation du driver du navigateur
driver = webdriver.Chrome()
# ici, la magie du browsing se passe... 🧙♂️
# Fermeture du navigateur
driver.quit()
La méthode quit() ferme toutes les fenêtres du navigateur et arrête complètement son exécution. Si tu oublies de l'appeler, des choses bizarres vont commencer à se produire avec des fenêtres de navigateur ouvertes en arrière-plan et des fuites de mémoire inexplicables. Et on est d'accord, tout le monde veut une vie heureuse.
Résoudre les problèmes avec des processus de navigateur bloqués
Parfois, après avoir utilisé Selenium, les processus du navigateur continuent de traîner en arrière-plan comme des unités indécises dans un RTS. Cela peut arriver, par exemple, si ton script "s'écrase" au milieu. Une des façons de gérer ce problème est d'utiliser une fermeture par lot des processus, par exemple, avec psutil en Python ou d'autres commandes système.
import psutil
# Fermeture de tous les processus Chrome bloqués
for proc in psutil.process_iter():
# Vérifiez si le processus appartient au navigateur
if 'chrome' in proc.name().lower():
proc.kill()
Ce n'est pas la méthode la plus élégante, mais parfois tu n'as pas d'autre option lorsque les processus deviennent incontrôlables. Rappelle-toi qu'en faisant cela, tu vas tuer tous les processus du navigateur, donc utilise-le raisonnablement.
2. Tester le script
Vérifier que tous les étapes du script fonctionnent bien
Terminer avec succès l'exécution du script, c'est juste la moitié du travail. Il est important de vérifier que chaque étape fonctionne correctement. Pour ça, les outils de test logiciels comme unittest ou pytest sont parfaits. Tu peux écrire des tests pour vérifier que ton script ouvre correctement les pages, clique sur les boutons et collecte les données.
Prenons un exemple minimaliste avec unittest:
import unittest
from selenium import webdriver
class TestBrowserAutomation(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
def test_open_page(self):
self.driver.get("https://example.com")
self.assertEqual("Example Domain", self.driver.title)
def tearDown(self):
self.driver.quit()
unittest.main()
Ce test vérifie que notre script ouvre la page https://example.com et que le titre de la page correspond aux attentes. C'est une méthode simple mais puissante pour s'assurer que les parties essentielles de ton script fonctionnent correctement.
Debug et optimisation
Parfois, même après avoir écrit des tests, ton script se comporte comme un enfant capricieux, refusant de marcher comme il faut. Et c'est là que le debug entre en scène. Utilise print() pour afficher des valeurs intermédiaires et voir où ça coince. Et bien sûr, les petits commentaires humoristiques dans le code sont les bienvenus, mais n'oublie pas l'objectif : comprendre ce qui se passe.
Par exemple, tu es confronté à un problème où some_element est manquant sur la page :
try:
some_element = driver.find_element_by_id('missing-id')
except Exception as e:
print(f"Oops ! Un problème est survenu : {e}")
En outre, surveille toujours la performance de ton script. Parfois, pour optimiser, tu peux utiliser différentes stratégies comme réduire la fréquence des requêtes ou optimiser la logique dans la recherche des éléments.
Prévenir les échecs futurs et les bugs
Après optimisation et debug, ton script devrait fonctionner parfaitement, comme une horloge suisse, mais il y a toujours un risque que de nouveaux problèmes apparaissent. Tu peux utiliser des systèmes de log comme logging pour noter ce qui se passe dans ton script. Cela te permet de voir où et pourquoi quelque chose a mal tourné.
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
logger.info("Début du script")
# log plus d'actions ici...
logger.info("Fin du script")
Souviens-toi de toujours anticiper les imprévus, surtout si tu travailles avec des données instables ou des pages web. Pense à intégrer des systèmes de retries et de timeouts pour éviter que ton script tombe au moindre pépin.
GO TO FULL VERSION