Latenode

Uso de navegadores headless con Selenium: configuración y ejemplos de código

Aprenda a configurar y usar navegadores headless con Selenium para automatización, pruebas y scraping web más rápidos sin interfaz gráfica.

6 min de lectura
Automatización web con Selenium ejecutada en un navegador headless

Los navegadores headless le permiten ejecutar interacciones web automatizadas más rápido al omitir la interfaz gráfica. Esto los hace ideales para pruebas, scraping y automatización de formularios. Esto es lo que necesita saber:

  • ¿Por qué usar el modo headless?
    • Velocidad: entre 2 y 15 veces más rápido que los navegadores convencionales.
    • Bajo consumo de recursos: uso mínimo de memoria y CPU.
    • Casos de uso: pruebas automatizadas, scraping web y flujos de CI/CD.
  • Requisitos de configuración:
    • Herramientas necesarias: Python (v3.7+), Selenium, controladores de navegador y navegadores compatibles (Chrome v109+, Firefox, Edge).
    • Instalación: use pip install selenium y configure el modo headless con argumentos sencillos como --headless=new.
  • Consejos clave para lograr buenos resultados:
    • Establezca tamaños de ventana fijos para obtener resultados coherentes.
    • Use esperas explícitas para el contenido dinámico.
    • Depure con capturas de pantalla y registros.

Comparación rápida

FunciónModo headlessNavegador estándar
VelocidadEntre 2 y 15 veces más rápidoVelocidad estándar
Uso de recursosBajoAlto
Retroalimentación visualNingunaInterfaz gráfica completa
AutomatizaciónIntegración más sencillaConfiguración más compleja

Los navegadores headless son potentes para una automatización rápida y eficiente. Siga los pasos de configuración y las prácticas recomendadas para optimizar su flujo.

Selenium x Python para automatizar un navegador headless

Guía de configuración de navegadores headless con Selenium

A continuación, verá cómo configurar Selenium para la automatización con navegadores headless.

Instale los componentes necesarios

Necesitará tener instalados los siguientes componentes:

ComponenteRequisitos de versiónFinalidad
Python3.7 o superiorEntorno de programación
Selenium WebDriverÚltima versión estableFramework de automatización de navegadores
Controladores de navegadorÚltima versión estableControladores para navegadores específicos
Navegadores webChrome (v109+ para el modo headless), Firefox, EdgeNavegadores objetivo para la automatización

Consejo: asegúrese de que los controladores de navegador coincidan con las versiones de sus navegadores para evitar problemas de compatibilidad.

Configure el entorno de Python

Cree un entorno de Python dedicado para su proyecto:

python -m venv selenium_env
source selenium_env/bin/activate  # For Unix/macOS
selenium_env\Scripts\activate    # For Windows

"Selenium automatiza navegadores. ¡Eso es todo!" - selenium.dev [3]

Cuando su entorno esté listo, instale las bibliotecas de Python necesarias.

Bibliotecas de Python necesarias

Use pip para instalar los paquetes requeridos:

pip install selenium
pip install webdriver_manager  # Simplifies driver management

Para el modo headless de Chrome (v109+), configúrelo de esta forma:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("--headless=new")
driver = webdriver.Chrome(options=chrome_options)

En Linux, incluya estos argumentos adicionales para evitar problemas habituales:

chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")

Por último, recuerde siempre cerrar la instancia de WebDriver para liberar recursos:

driver.quit()

Siga estos pasos para poner en marcha su automatización headless con Selenium.

sbb-itb-23997f1

Uso de navegadores headless en Selenium

Configuración del modo headless de Chrome

Para Chrome (v109+), active el modo headless mediante la opción --headless, como se explicó anteriormente.

Configuración del modo headless de Firefox

Para habilitar el modo headless en Firefox con GeckoDriver, use el siguiente código:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

firefox_options = Options()
firefox_options.add_argument("--headless")
driver = webdriver.Firefox(options=firefox_options)

Configuración del modo headless de Edge

Edge también admite el modo headless y su configuración es similar a la de Chrome. Este es un ejemplo:

from selenium import webdriver
from selenium.webdriver.edge.options import Options

edge_options = Options()
edge_options.add_argument("--headless")
driver = webdriver.Edge(options=edge_options)

"Headless es un modo de ejecución para Firefox y los navegadores basados en Chromium. Permite a los usuarios ejecutar scripts automatizados en modo headless, lo que significa que la ventana del navegador no será visible." - Diego Molina, Selenium [1]

Asegúrese de llamar a driver.quit() después de sus pruebas para liberar recursos del sistema.

Use estas configuraciones específicas de cada navegador junto con las próximas prácticas recomendadas para garantizar una automatización fluida. A continuación, encontrará consejos para optimizar su flujo y resolver problemas habituales.

Guía de consejos y resolución de problemas

Después de configurar sus navegadores headless, use estas estrategias para garantizar una automatización fluida y eficaz.

Consejos para lograr una automatización eficaz

Ajuste su proceso de automatización con una configuración adecuada y ajustes de sincronización.

  • Establezca un tamaño fijo para la ventana del navegador: use 1920x1080 para garantizar una representación coherente de los elementos en todas las páginas.
  • Gestione el contenido dinámico con esperas explícitas: esto ayuda a evitar problemas de sincronización cuando los elementos se cargan de forma asíncrona. Este es un ejemplo:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "dynamic-content"))
)
  • Incorpore desplazamiento para elementos ocultos: resulta especialmente útil en páginas que cargan contenido dinámicamente mientras se desplaza.
driver.execute_script("window.scrollBy(0, 100);")

Resuelva problemas habituales

En ocasiones, el modo headless puede provocar problemas como errores de detección de elementos o comportamientos inesperados. A continuación, le indicamos cómo solucionarlos:

  • Elemento no encontrado: asegúrese de que la página se haya cargado por completo. Puede comprobarlo verificando la URL actual:
current_url = driver.current_url

Además, pruebe a establecer un user-agent personalizado o a añadir lógica de reintentos para gestionar fallos intermitentes.

  • Los eventos de clic no funcionan: si los métodos de clic estándar fallan, use JavaScript para activar la acción de clic:
element = driver.find_element(By.ID, "button-id")
driver.execute_script("arguments[0].click();", element)

Depure scripts de automatización

Cuando los scripts headless no funcionan como se espera, la depuración es fundamental. Estos son algunos métodos para solucionar problemas:

  • Capture pantallas: guarde capturas de pantalla en puntos críticos para identificar problemas visuales.
driver.save_screenshot("debug_screenshot.png")
  • Implemente registros: añada registros detallados para realizar un seguimiento de la ejecución del script e identificar fallos.
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.debug('Clicking element: button-1')
  • Habilite la depuración remota: use la función de depuración remota de Chrome para inspeccionar el navegador durante la ejecución.
chrome_options.add_argument("--remote-debugging-port=9222")

Prácticas recomendadas de mantenimiento

Para mantener la fiabilidad de sus pruebas a lo largo del tiempo:

  • Almacene los datos de prueba en archivos externos para evitar codificarlos de forma fija.
  • Use aserciones para verificar los puntos de control clave en sus scripts.
  • Actualice periódicamente los localizadores para que coincidan con los cambios en la aplicación web.
  • Mantenga una estructura de proyecto clara y coherente para simplificar las actualizaciones y la depuración.

Resumen

Esta sección reúne las principales ventajas de la automatización headless con Selenium y ofrece pasos prácticos para ayudarle a comenzar.

Usos y ventajas clave

La automatización headless con Selenium acelera las pruebas, hasta 15 veces más rápido, al omitir el renderizado de la interfaz gráfica. Este enfoque reduce el consumo de recursos y simplifica los flujos de CI/CD [2].

Los navegadores headless son especialmente útiles para:

  • Integración continua: intégrense fácilmente en pipelines de CI/CD sin depender de interfaces gráficas.
  • Eficiencia de recursos: utilizan menos memoria y CPU, lo que permite ejecutar varias pruebas simultáneamente.
  • Scraping web: extraen datos de forma eficaz de sitios web con un uso intensivo de JavaScript.
  • Pruebas de rendimiento de red: supervisan el comportamiento de las aplicaciones y los tiempos de respuesta.

Próximos pasos

Para aprovechar al máximo estas ventajas, considere las siguientes recomendaciones:

NavegadorIdeal paraConsideración clave
Chrome HeadlessAutomatización y pruebas generalesAmplio soporte y compatibilidad
Firefox HeadlessValidación entre navegadoresSólido cumplimiento de estándares

Consejos de implementación:

  • Configure WebDriver con opciones headless específicas para su navegador.
  • Establezca tamaños de ventana y tiempos de espera adecuados.
  • Use condiciones de espera para gestionar contenido dinámico.
  • Habilite la funcionalidad de capturas de pantalla para fines de depuración.
  • Integre herramientas de CI/CD como Jenkins para optimizar los flujos.

"Las pruebas con navegadores headless son útiles para verificar texto, elementos u otros datos estáticos en una página web determinada. Al igual que un navegador convencional, un navegador headless entiende HTML y CSS. También puede ejecutar JavaScript, como solicitudes AJAX." [4]

References

FAQ

Frequently Asked Questions

Un navegador headless ejecuta interacciones web automatizadas sin interfaz gráfica. En Selenium, puede activar el modo headless mediante las opciones del navegador (por ejemplo, --headless=new para Chrome v109+) para que los scripts se ejecuten más rápido y consuman menos CPU y memoria.

¿Te resultó útil? Compártelo →

Escrito por

Vasiliy Datsenko

Jefe de Soporte al Cliente

Vasiliy Datsenko es Jefe de Soporte al Cliente en Latenode y un escritor de automatización centrado en productos. Su trabajo conecta las conversaciones con los clientes, la investigación sobre automatización de flujos de trabajo, los casos de uso de IA y la educación práctica sobre productos para equipos que intentan automatizar procesos comerciales reales.

Perfil del autor →

Verificado por

Oleg Zankov

CEO Latenode, No-code Expert

Con una ética arraigada en la innovación, la resolución de problemas y la experiencia de usuario, me enfoco en capacitar a los equipos para crear integraciones personalizadas y automatizar flujos de trabajo con facilidad y eficiencia. Trayendo una gran experiencia en desarrollo empresarial, emprendimiento tecnológico y desarrollo de software, reconocí la necesidad de una solución de integración más accesible, escalable y adaptable. Así nació Latenode.com. Con nuestra plataforma, las empresas pueden aprovechar el poder de la tecnología sin necesidad de conocimientos extensos de codificación. Apasionado por fomentar un futuro donde la tecnología nos sirva, y no al revés, mi misión es simplificar procesos complejos. Creo en democratizar la tecnología y equipar a los equipos con las herramientas para innovar, crecer y tener éxito en un mundo cada vez más digital.

Perfil del autor →

Seguir leyendo