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.

Pasos para utilizar el controlador HTMLUnit con Selenium

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:

PhantomJS

Pasos para correr Selenium con PhatomJS

Paso 1) Necesita Eclipse con Selenium instalado

Paso 2) Descargar PhantomJS aquí

Pasos para ejecutar Selenium Con PhatomJS

Paso 3) Extraiga la carpeta descargada a Archivos de programa

Pasos para ejecutar Selenium Con PhatomJS

Paso 4) Descargue el controlador PhantomJS desde aquí. Agrega el frasco a tu proyecto

Pasos para ejecutar Selenium Con PhatomJS

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.

Pasos para ejecutar Selenium Con PhatomJS

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.