Controlador de unidad HTML en SeleniumTutorial sobre navegadores sin interfaz gráfica
⚡ Resumen inteligente
HtmlUnitDriver es la implementación sin interfaz gráfica más rápida de Selenium WebDriver, mientras que PhantomJS, que alguna vez fue un popular navegador sin interfaz gráfica basado en GhostDriver, está obsoleto desde 2018 y ahora ha sido reemplazado por Chrome sin interfaz gráfica, sin interfaz gráfica Firefoxy Playwright para flujos de trabajo de automatización modernos.

Un navegador sin interfaz gráfica es un navegador web sin interfaz gráfica de usuario. Puede ejecutarse en segundo plano sin mostrar ninguna imagen.tracciones. Ofrece una forma eficiente y efectiva de probar aplicaciones web ahorrando tiempo y recursos. En este artículo, exploramos qué es un navegador sin interfaz gráfica, cuándo usar pruebas con navegadores sin interfaz gráfica y cómo realizarlas usando Selenium HtmlUnitDriver y PhantomJS.
¿Qué es un navegador sin cabeza?
Un navegador sin interfaz gráfica es un navegador web. sin una interfaz gráfica de usuarioEste programa se comporta como un navegador normal, pero no muestra ninguna ventana de interfaz gráfica de usuario durante su ejecución.
Algunos ejemplos de controladores de navegador sin interfaz gráfica incluyen:
- Unidad HTML
- Fantasma
- PhantomJS (obsoleto)
- ZombiJS
- Watir-controlador web
- Cromo sin cabeza
- Sin cabeza Firefox
¿Cuándo utilizar las pruebas de navegador sin cabeza?
En la era digital actual, las aplicaciones web se diseñan para ser compatibles con una amplia gama de dispositivos y plataformas. Esto supone un reto para los desarrolladores, quienes deben garantizar que sus aplicaciones funcionen a la perfección en diferentes entornos. Las pruebas sin interfaz gráfica (headless browser testing) son una solución ideal, ya que permiten a los desarrolladores validar sus aplicaciones web sin una interfaz gráfica de usuario. Mediante estas pruebas, los desarrolladores pueden cubrir rápidamente aplicaciones web complejas con numerosos componentes y dependencias, lo que facilita un desarrollo más rápido, reduce los errores y mejora la experiencia del usuario.
Pruebas de navegador sin cabeza con Selenium
Selenium es una herramienta poderosa para pruebas de navegador sin interfaz gráfica, que permite a los desarrolladores ejecutar pruebas automatizadas sin una interfaz de usuario visible. Al ejecutar las pruebas en segundo plano, Selenium ahorra tiempo y recursos al tiempo que también ayudaping Identificar problemas que podrían no ser evidentes en un entorno de pruebas tradicional basado en interfaz de usuario. Esto incluye problemas de rendimiento y diseño que solo se hacen patentes en un entorno sin interfaz gráfica. Sin embargo, es importante combinar las pruebas sin interfaz gráfica con las pruebas tradicionales basadas en interfaz de usuario para garantizar una cobertura completa.
Ejemplos populares de navegadores sin cabeza
Existen numerosos navegadores sin interfaz gráfica, cada uno con sus propias características y ventajas, lo que los hace adecuados para diferentes casos de uso. Los analizamos a continuación.
PhantomJS
Aviso de descontinuación: El desarrollo activo de PhantomJS se detuvo en 2018 y el proyecto ya no recibe mantenimiento. Los nuevos proyectos deberían preferir Chrome sin interfaz gráfica, sin interfaz gráfica Firefox, o Dramaturgo Para la automatización moderna sin interfaz gráfica. El ejemplo de PhantomJS que se muestra a continuación se incluye únicamente como referencia.
PhantomJS es un navegador sin interfaz gráfica que utiliza WebKit como motor de renderizado y admite estándares web como HTML5, CSS3 y JavaScript. Puede utilizarse para la captura de pantalla y la automatización de páginas web. Es de código abierto y compatible con múltiples sistemas operativos.
Ejemplo de Selenium con PhantomJS sin cabeza en Python:
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
# Set up PhantomJS options
phantomjs_options = webdriver.DesiredCapabilities.PHANTOMJS.copy()
phantomjs_options['phantomjs.page.settings.userAgent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
# Set up the PhantomJS driver
driver = webdriver.PhantomJS('/path/to/phantomjs', desired_capabilities=phantomjs_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()
Chrome
Chrome es el navegador más popular del mundo y también ofrece un modo sin interfaz gráfica. Se puede usar en múltiples plataformas y es compatible con los lenguajes de programación y frameworks más populares. Sus herramientas de depuración integradas y su amplia documentación facilitan su uso y la resolución de cualquier problema que pueda surgir durante las pruebas.
Ejemplo de Chrome sin cabeza con Selenium in Python:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# Set up Chrome options
chrome_options = Options()
chrome_options.add_argument('--headless') # Run Chrome in headless mode
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
# Set up the Chrome driver
driver = webdriver.Chrome('/path/to/chromedriver', options=chrome_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()
Firefox
Firefox es un navegador web popular que también se puede utilizar como navegador sin interfaz gráfica para realizar pruebas. Una ventaja de usar Firefox Como navegador sin interfaz gráfica, su bajo consumo de recursos lo convierte en una opción versátil para realizar pruebas en diferentes sistemas operativos. Combinado con su amplia documentación y soporte de la comunidad, Firefox Es una excelente opción para equipos que experimentan con la automatización de navegadores sin interfaz gráfica.
Ejemplo de sin cabeza Firefox con Selenium in Python:
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
# Set up Firefox options
firefox_options = Options()
firefox_options.add_argument('--headless') # Run Firefox in headless mode
# Set up the Firefox driver
driver = webdriver.Firefox(options=firefox_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()
Ventajas de las pruebas de navegador sin cabeza
- Ejecución de pruebas más rápida
- Pruebas rentables
- Mejor cobertura de prueba
- Flexibilidad en la ejecución de pruebas.
- Integración más sencilla con pipelines de CI/CD
Desventajas de las pruebas de navegador sin cabeza
- Falta de interfaz gráfica de usuario visible para la inspección manual.
- La depuración puede ser más difícil sin una pantalla.
- Cobertura limitada del comportamiento específico del navegador
HtmlUnitDriver
HtmlUnitDriver es la implementación más ligera y rápida de un navegador sin interfaz gráfica para Selenium WebDriver. Se basa en HtmlUnit y también se conoce como el Controlador de navegador sin cabeza. Se comporta como Chrome, IE o Firefox controlador, pero no tiene una interfaz gráfica de usuario, por lo que la ejecución de la prueba no es visible en la pantalla. HtmlUnitDriver todavía se mantiene y se distribuye a través de org.seleniumhq.selenium:htmlunit3-driver Artefacto Maven.
Características de HtmlUnitDriver:
- Soporte para los protocolos HTTPS y HTTP.
- Compatibilidad con respuestas HTML (hacer clic en enlaces, enviar formularios, recorrer el modelo DOM del documento HTML y más).
- Soporte para cookies
- Soporte de servidor proxy
- Soporte para autenticación básica y NTLM
- Sólida JavaScript múltiples proveedores
- Compatibilidad con los métodos de envío GET y POST.
- Posibilidad de personalizar los encabezados de solicitud que se envían al servidor.
- Capacidad para controlar si las respuestas fallidas del servidor deben generar excepciones o devolverse como páginas del tipo apropiado.
Pasos para usar HtmlUnitDriver con Selenium
Paso 1) In Eclipse, copie el siguiente código. Agregue el estándar Selenium Agregue los archivos de la biblioteca al proyecto. No se requieren archivos JAR adicionales.
package htmldriver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
public class htmlUnitYest {
public static void main(String[] args) {
// Creating a new instance of the HtmlUnit driver
WebDriver driver = new HtmlUnitDriver();
// Navigate to Google
driver.get("http://www.google.com");
// Locate the searchbox using its name
WebElement element = driver.findElement(By.name("q"));
// Enter a search query
element.sendKeys("Guru99");
// Submit the query. WebDriver searches for the form using the text input element automatically
// No need to locate/find the submit button
element.submit();
// This code will print the page title
System.out.println("Page title is: " + driver.getTitle());
driver.quit();
}
}
Paso 2) Ejecute el código. Observará que no se abre ningún navegador y que los resultados se muestran en la consola.
Ventajas de HtmlUnitDriver
- Como no utiliza ninguna interfaz gráfica de usuario (GUI), las pruebas se ejecutan en segundo plano sin interrupción visual.
- En comparación con otras instancias de controlador, la ejecución es más rápida.
- También puedes emular diferentes versiones del navegador al ejecutar pruebas a través de HtmlUnitDriver.
-
Es independiente de la plataforma y permite ejecutar varias pruebas simultáneamente con facilidad. Es ideal para Prueba de carga.
Limitaciones:
- No puede emular completamente JavaComportamiento de scripts de todos los motores de navegador reales
PhantomJS
Recuerde: PhantomJS está obsoleto y ya no recibe mantenimiento. Para nuevos trabajos sin interfaz gráfica, utilice Selenium con Chrome sin cabeza o Firefoxo bien, pasar a Dramaturgo. La sección siguiente se conserva únicamente como referencia antigua.
PhantomJS es un navegador sin interfaz gráfica con un JavaAPI de scripts. Históricamente se utilizaba para probar sitios web sin interfaz gráfica, acceder a páginas web y manipularlas, y viene incluida con la API DOM estándar.
Para usar PhantomJS con SeleniumNecesitas GhostDriver. Conductor fantasma es una implementación del protocolo de cable WebDriver en lenguaje natural JavaScript para PhantomJS.
Las versiones posteriores de PhantomJS COMPLETAMENTE GhostDriver, así que No es necesario instalarlo por separado.
Así es como funciona el sistema:
Pasos para correr Selenium con PhantomJS
Paso 1) Necesita Eclipse con Selenium instalado.
Paso 2) Descargar PhantomJS aquí.
Paso 3) Extraccopie la carpeta descargada en Archivos de programa.
Paso 4) Descargue el controlador PhantomJS desde aquí. Agrega el archivo JAR a tu proyecto.
Paso 5) Pegue el siguiente código en Eclipse.
package htmldriver;
import java.io.File;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.phantomjs.PhantomJSDriver;
public class phantom {
public static void main(String[] args) {
File file = new File("C:/Program Files/phantomjs-2.0.0-windows/bin/phantomjs.exe");
System.setProperty("phantomjs.binary.path", file.getAbsolutePath());
WebDriver driver = new PhantomJSDriver();
driver.get("http://www.google.com");
WebElement element = driver.findElement(By.name("q"));
element.sendKeys("Guru99");
element.submit();
System.out.println("Page title is: " + driver.getTitle());
driver.quit();
}
}
Paso 6) Ejecuta el código. Verás el resultado en la consola y no se abrirá ningún navegador.
NOTA: En la primera ejecución, dependiendo de su configuración, es posible que vea una advertencia de seguridad de Windows Para permitir que PhantomJS se ejecute. Haga clic. Permitir Acceso.
Históricamente, muchas organizaciones han utilizado PhantomJS para tareas como las siguientes:
- Pruebas sin cabeza
- La captura de pantalla
- Automatización de páginas
- Monitorización de la red
- Generar capturas de pantalla del panel de control para sus usuarios.
- Ejecutar pruebas unitarias en la línea de comandos
- Generación de manuales para empleados a partir de HTML y PDF.
- Combinación con QUnit para el conjunto de pruebas
Para nuevos trabajos, reemplace estos casos de uso de PhantomJS con Chrome sin interfaz gráfica, sin interfaz gráfica Firefoxo Playwright, que reciben actualizaciones continuas de seguridad y renderizado.






