Navegador sin cabeza Selenium (HTMLUnitDriver)
Un navegador sin cabeza es un navegador web sin una interfaz gráfica de usuario. Puede ejecutarse en segundo plano sin distracciones visuales. Ofrece una forma eficiente y eficaz de probar aplicaciones web mientras ahorra tiempo y recursos. En este tutorial, profundizaremos en qué es un navegador sin cabeza, cuándo usar pruebas de navegador sin cabeza y cómo realizarlas usando Selenium.
¿Qué es el navegador sin cabeza?
Un navegador sin cabeza es un navegador web sin una interfaz gráfica de usuario. Este programa se comportará como un navegador pero no mostrará ninguna GUI.
Algunos de los ejemplos de conductores sin cabeza incluyen
- Unidad HTML
- Fantasma
- PhantomJS
- ZombiJS
- Watir-controlador web
¿Cuándo utilizar las pruebas de navegador sin cabeza?
En la era digital actual, las aplicaciones web se desarrollan para que sean compatibles con una amplia gama de dispositivos y plataformas. Esto suele representar un desafío para los desarrolladores de sitios web que necesitan garantizar que sus aplicaciones funcionen sin problemas en todas estas plataformas. Las pruebas de navegador sin interfaz gráfica son una solución ideal para este problema, ya que permiten a los desarrolladores probar sus aplicaciones web sin la necesidad de una interfaz gráfica de usuario. Al utilizar pruebas de navegador sin interfaz gráfica, los desarrolladores pueden probar fácilmente aplicaciones web complejas con múltiples componentes y dependencias, lo que allana el camino para un desarrollo más rápido, un código sin errores y usuarios satisfechos.
Pruebas de navegador sin cabeza con Selenium
Selenium es una herramienta poderosa para realizar pruebas de navegador sin interfaz gráfica, que permite a los desarrolladores ejecutar pruebas automatizadas sin la necesidad de una interfaz de usuario visible. Al ejecutar pruebas en segundo plano, Selenium puede ahorrar tiempo y recursos y, al mismo tiempo, ayudar a identificar problemas que pueden no ser evidentes en un entorno de prueba tradicional basado en UI. Esto incluye problemas relacionados con el rendimiento y problemas de diseño que solo pueden resultar evidentes en una configuración sin cabeza. Sin embargo, es importante tener en cuenta las limitaciones de las pruebas sin cabeza y equilibrarlas con los métodos tradicionales basados en la interfaz de usuario para garantizar una cobertura de prueba integral.
Ejemplos populares de navegadores sin cabeza
Hay muchos navegadores sin cabeza disponibles, cada uno con sus propias características y beneficios únicos, lo que los hace adecuados para diferentes casos de uso. Los analizamos a continuación: -
PhantomJS
PhantomJS es un navegador sin cabeza que utiliza WebKit como motor de renderizado y admite varios estándares web como HTML5, CSS3 y JavaScript. Puede utilizarse para capturas de pantalla y tareas de automatización de páginas. 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 planeta y también ofrece una función sin cabeza. Se puede utilizar en múltiples plataformas y admite marcos y lenguajes de programación. Sus herramientas de depuración integradas y su extensa documentación facilitan su uso y solucionan 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 cabeza con fines de prueba. Uno de los beneficios de utilizar Firefox Como navegador sin cabeza es su naturaleza liviana, lo que lo convierte en una opción versátil para realizar pruebas en varios sistemas operativos. Además, con su extensa documentación y soporte comunitario, Firefox es una excelente opción para quienes buscan experimentar con la tecnología de navegador sin cabeza.
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 pruebas
- Flexibilidad en la ejecución de pruebas.
- Integración con canalizaciones de CI / CD
Desventajas de las pruebas de navegador sin cabeza
- Falta de interfaz gráfica de usuario
- Dificultades en la depuración
- Soporte de navegador limitado
Controlador de unidad HTML
HTML UnitDriver es el navegador sin cabeza más liviano y de implementación más rápida para WebDriver. Está basado en HtmlUnit. Es conocido como Controlador de navegador sin cabezaEs lo mismo que Chrome, IE o Fire.Fox controlador, pero no tiene GUI, por lo que no se puede ver la ejecución de la prueba en la pantalla.
Características del controlador de unidad HTML
- Soporte para los protocolos HTTPS y HTTP.
- Soporte para respuestas HTML (hacer clic en enlaces, enviar formularios, recorrer el modelo DOM del documento HTML, etc.)
- Soporte para cookies
- Soporte de servidor proxy
- Soporte para autenticación básica y NTLM
- Excelente JavaGuión SOPORTE
- Soporte para métodos de envío GET y POST
- Posibilidad de personalizar los encabezados de solicitud que se envían al servidor.
- Capacidad para determinar si las respuestas fallidas del servidor deben generar excepciones o deben devolverse como páginas del tipo apropiado
Pasos para utilizar el controlador HTMLUnit con Selenium
Paso 1) In Eclipse, copie el código siguiente. Agregue los archivos de la biblioteca de selenio estándar 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 HTML unit 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 inicia ningún navegador y que los resultados se muestran en la consola.
Beneficios del controlador de unidad HTML:
- Dado que no utiliza ninguna GUI para realizar pruebas, sus pruebas se ejecutarán en segundo plano sin ninguna interrupción visual.
- En comparación con todas las demás instancias, la ejecución es más rápida.
- Para ejecutar sus pruebas a través del controlador HtmlUnit, también puede seleccionar otras versiones del navegador.
-
Es independiente de la plataforma y es más fácil ejecutar varias pruebas al mismo tiempo. Ideal para Prueba de carga.
Limitaciones:
- No puede emular otros navegadores. JavaComportamiento del script
PhantomJS
PhantomJS es un navegador sin cabeza con JavaAPI de script. Es una solución óptima para probar sitios web sin interfaz gráfica, acceder y manipular páginas web y viene con la API DOM estándar.
Para utilizar PhantomJS con Seleniun, hay que utilizar GhostDriver. Conductor fantasma es una implementación del protocolo Webdriver Wire en JS simple para PhantomJS.
La última versión de PhatomJS tiene COMPLETAMENTE conductor fantasma y no es necesario instalarlo por separado.
Así es como funciona el sistema:
Pasos para correr Selenium con PhatomJS
Paso 1) Necesita Eclipse con Selenium instalado
Paso 2) Descargar PhantomJS aquí
Paso 3) Extraiga la carpeta descargada a Archivos de programa
Paso 4) Descargue el controlador PhantomJS desde aquí. Agrega el frasco 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) Ejecute el código. Observará que el resultado se muestra en la consola y no se inicia ningún navegador.
NOTA: En la primera ejecución, según su configuración, es posible que reciba una advertencia de seguridad de Windows para permitir ejecutar PhantomJS. Haga clic en Permitir acceso.
Muchas organizaciones utilizan Phantom.JS para diversos fines, por ejemplo,
- Pruebas sin cabeza
- Captura de pantalla
- Automatización de página
- Red de Monitoreo
- Para representar capturas de pantalla del panel para sus usuarios
- Para ejecutar pruebas unitarias en la línea de comando
- Para generar manuales de empleados de HTML a PDF
- Combinado con QUnit para el conjunto de pruebas
Resum
Para probar la aplicación rápidamente en varios navegadores y sin ninguna interrupción visual, navegador sin cabeza Pruebas Debido a su velocidad, precisión y funciones de fácil acceso, el controlador de unidad HTML y PhantomJS están ganando popularidad para las pruebas de automatización de navegadores sin interfaz gráfica. Si sigue algunos pasos simples, podrá conocer la facilidad con la que estas herramientas se pueden integrar con otras y ejecutar el código de prueba.