Passer au contenu

Comment prendre des captures d'écran avec Selenium

Selenium est un outil d'automatisation de navigateur populaire utilisé pour le web scraping, les tests, etc. Une fonctionnalité utile qu’il offre est la possibilité de prendre des captures d’écran de pages Web pendant l’automatisation. Voici un aperçu détaillé de la façon de prendre des captures d'écran pleine page et au niveau des éléments avec Selenium en Python.

Introduction à la prise de captures d'écran avec Selenium

Les principales raisons pour lesquelles vous souhaiterez peut-être prendre des captures d'écran avec Selenium incluent :

  • Enregistrer des copies des pages Web que vous avez récupérées ou avec lesquelles vous avez interagi pour le débogage ou les enregistrements
  • Capturer du contenu dynamique comme des informations de date/heure ou des publicités pour une analyse ultérieure
  • Vérification des problèmes de mise en page sur les navigateurs et les appareils
  • Documenter les étapes et les états du flux de travail dans les tests automatisés
  • Prendre des captures d'écran d'images captcha pour les résoudre avec automatisation

Selenium prend en charge la prise de captures d'écran de pages Web complètes et d'éléments spécifiques d'une page. Cela offre une grande flexibilité pour capturer exactement ce dont vous avez besoin.

Configuration de Selenium et ouverture d'un navigateur

Pour commencer, nous devons d'abord importer Selenium et instancier un objet WebDriver pour contrôler le navigateur. L'exemple ci-dessous montre l'ouverture de Chrome :

from selenium import webdriver

driver = webdriver.Chrome()

D'autres navigateurs comme Firefox et Edge fonctionnent de la même manière. Une fois l'objet pilote prêt, nous pouvons maintenant accéder à une page Web pour effectuer une capture d'écran :

driver.get("https://example.com")

Prendre des captures d'écran pleine page

Le moyen le plus simple de prendre une capture d'écran de l'intégralité du contenu de la fenêtre du navigateur consiste à utiliser save_screenshot().

Passez-lui un chemin de fichier pour enregistrer l'image directement sur le disque :

driver.save_screenshot(‘example_screenshot.png‘)

Alternativement, vous pouvez obtenir la capture d'écran sous forme d'octets PNG en mémoire ou de chaîne codée en Base64 :

screenshot_png = driver.get_screenshot_as_png()
screenshot_b64 = driver.get_screenshot_as_base64() 

Cela permet de sauvegarder la capture d'écran dans une base de données ou de l'envoyer via HTTP, par exemple.

Prendre des captures d'écran d'éléments

Pour prendre des captures d'écran d'un élément spécifique sur la page plutôt que sur le plein écran, vous devez d'abord rechercher l'élément à l'aide d'un localisateur tel qu'un sélecteur CSS ou XPath :

element = driver.find_element(By.ID, ‘main-content‘)

Appelez ensuite .screenshot() sur le WebElement pour capturer uniquement cette partie de la page :

element_shot = element.screenshot(‘element.png‘)

Tout comme pour les captures d'écran complètes, vous pouvez également obtenir les octets ou la chaîne Base64.

Conseils pour des captures d'écran fiables

Voici quelques conseils pour prendre des captures d’écran précises et utiles avec Selenium :

  • Attendez que les pages soient complètement chargées avant de prendre des captures d'écran pour éviter de capturer des états à mi-chargement.
  • Faites défiler les éléments avant de prendre des captures d’écran si nécessaire.
  • Surveillez les publicités et le contenu dynamique qui changent entre les prises de vue.
  • Prenez des captures d'écran mobiles en redimensionnant la fenêtre du navigateur ou en utilisant l'émulation mobile.
  • Les navigateurs sans tête comme PhantomJS peuvent effectuer des captures d'écran mais peuvent manquer certains contenus.

Cas d'utilisation des captures d'écran de sélénium

Quelques exemples de la façon dont vous pouvez utiliser les captures d'écran Selenium dans vos projets de web scraping et d'automatisation :

  • Débogage et journalisation : comparez les captures d'écran avant et après pour voir les modifications.
  • Capturer du contenu généré ou sensible au temps comme des tableaux de bord.
  • Tests de régression visuelle automatisés sur toutes les versions du navigateur.
  • Documenter le flux de travail et l'état pendant les tests.
  • Captchas de capture d'écran pour alimenter un service de résolution.
  • Archivage des données de page récupérées avec des captures d'écran.

Récapitulatif et prochaines étapes

Les étapes pour prendre des captures d'écran avec Selenium en Python sont :

  1. Importez Selenium et créez un WebDriver
  2. Accédez à la page Web cible
  3. Tél save_screenshot() pour capturer une page entière
  4. Ou trouvez un élément et appelez screenshot() pour capturer uniquement cet élément
  5. Ajustez si nécessaire pour les pages dynamiques et mobiles

J'espère que ce guide vous donnera une bonne base pour prendre des captures d'écran dans votre propre projet Selenium ! Les possibilités sont infinies.

Mots clés:

Prendre part à la conversation

Votre adresse email n'apparaitra pas. Les champs obligatoires sont marqués *