Ir al contenido

Cómo tomar capturas de pantalla con Selenium

Selenium es una popular herramienta de automatización del navegador que se utiliza para web scraping, pruebas y más. Una característica útil que ofrece es la capacidad de tomar capturas de pantalla de páginas web durante la automatización. Aquí se ofrece un análisis en profundidad de cómo tomar capturas de pantalla de página completa y de nivel de elemento con Selenium en Python.

Introducción a tomar capturas de pantalla con Selenium

Las principales razones por las que quizás quieras tomar capturas de pantalla con Selenium incluyen:

  • Guardar copias de páginas web que ha raspado o con las que ha interactuado para depurar o registrar
  • Captura de contenido dinámico como información de fecha/hora o anuncios para su posterior análisis
  • Comprobación de problemas de diseño en navegadores y dispositivos
  • Documentar los pasos y estados del flujo de trabajo en pruebas automatizadas
  • Tomar capturas de pantalla de imágenes captcha para resolverlas con automatización

Selenium admite la toma de capturas de pantalla tanto de páginas web completas como de elementos específicos de una página. Esto proporciona mucha flexibilidad para capturar exactamente lo que necesita.

Configurar Selenium y abrir un navegador

Para comenzar, primero necesitamos importar Selenium y crear una instancia de un objeto WebDriver para controlar el navegador. El siguiente ejemplo muestra cómo abrir Chrome:

from selenium import webdriver

driver = webdriver.Chrome()

Otros navegadores como Firefox y Edge funcionan de manera similar. Con el objeto del controlador listo, ahora podemos navegar a una página web para realizar una captura de pantalla:

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

Tomar capturas de pantalla de página completa

La forma más sencilla de tomar una captura de pantalla de todo el contenido de la ventana del navegador es usar save_screenshot().

Pásele una ruta de archivo para guardar la imagen directamente en el disco:

driver.save_screenshot(‘example_screenshot.png‘)

Alternativamente, puede obtener la captura de pantalla como bytes PNG en memoria o una cadena codificada en Base64:

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

Esto permite guardar la captura de pantalla en una base de datos o enviarla a través de HTTP, por ejemplo.

Tomar capturas de pantalla de elementos

Para tomar capturas de pantalla de un elemento específico en la página en lugar de la pantalla completa, primero debe encontrar el elemento usando un localizador como el selector CSS o XPath:

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

Luego llame .screenshot() en WebElement para capturar solo esa parte de la página:

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

Al igual que con las capturas de pantalla completas, también puedes obtener los bytes o la cadena Base64.

Consejos para capturas de pantalla confiables

A continuación se ofrecen algunos consejos para realizar capturas de pantalla precisas y útiles con Selenium:

  • Espere a que las páginas se carguen por completo antes de tomar capturas de pantalla para evitar capturar estados de carga media.
  • Desplácese por los elementos a la vista antes de tomar capturas de pantalla si es necesario.
  • Esté atento a los anuncios y el contenido dinámico que cambian entre tomas.
  • Tome capturas de pantalla móviles cambiando el tamaño de la ventana del navegador o usando la emulación móvil.
  • Los navegadores sin cabeza como PhantomJS pueden realizar capturas de pantalla, pero pueden perder parte del contenido.

Casos de uso para capturas de pantalla de Selenium

Algunos ejemplos de cómo podría utilizar las capturas de pantalla de Selenium en sus proyectos de automatización y web scraping:

  • Depuración y registro: compare capturas de pantalla antes y después para ver los cambios.
  • Captura de contenido generado o urgente, como paneles.
  • Pruebas de regresión visual automatizadas en todas las versiones del navegador.
  • Documentar el flujo de trabajo y el estado durante las ejecuciones de prueba.
  • Captchas de captura de pantalla para incorporar a un servicio de resolución.
  • Archivar datos de páginas extraídas junto con capturas de pantalla.

Resumen y próximos pasos

Los pasos para realizar capturas de pantalla con Selenium en Python son:

  1. Importe Selenium y cree un WebDriver
  2. Navegar a la página web de destino
  3. Llamar save_screenshot() para capturar la página completa
  4. O buscar un elemento y llamar screenshot() para capturar solo ese elemento
  5. Modifique según sea necesario para páginas dinámicas y dispositivos móviles

¡Espero que esta guía te brinde una buena base para tomar capturas de pantalla en tu propio proyecto Selenium! Las posibilidades son infinitas.

Tags:

Únase a la conversación

Su dirección de correo electrónico no será publicada. Las areas obligatorias están marcadas como requeridas *