HTMLUnitDriver in Selenium

Un browser headless รจ un browser web senza interfaccia utente grafica. Puรฒ funzionare in background senza distrazioni visive. Offre un modo efficiente ed efficace per testare le applicazioni web risparmiando tempo e risorse. In questo tutorial, approfondiremo cos'รจ un browser headless, quando utilizzare il test del browser headless e come eseguirlo utilizzando Selenium.

Cos'รจ il browser senza testa?

Un browser headless รจ un browser web senza un'interfaccia utente grafica. Questo programma si comporterร  proprio come un browser ma non mostrerร  alcuna GUI.

Alcuni degli esempi di driver headless includono

  • HtmlUnit
  • Fantasma
  • PhantomJS
  • ZombieJS
  • Watir-webdriver

Quando utilizzare il test del browser headless?

Nell'era digitale odierna, le applicazioni web vengono sviluppate per essere compatibili con un'ampia gamma di dispositivi e piattaforme. Ciรฒ spesso rappresenta una sfida per gli sviluppatori di siti web che devono garantire che le loro applicazioni funzionino senza problemi su queste piattaforme. Il test del browser headless รจ una soluzione ideale per questo problema in quanto consente agli sviluppatori di testare le loro applicazioni web senza la necessitร  di un'interfaccia utente grafica. Utilizzando il test del browser headless, gli sviluppatori possono facilmente testare applicazioni web complesse con piรน componenti e dipendenze, aprendo la strada a uno sviluppo piรน rapido, codice privo di bug e utenti soddisfatti.

Test del browser senza testa con Selenium

Selenium รจ un potente strumento per testare i browser headless, consentendo agli sviluppatori di eseguire test automatizzati senza la necessitร  di un'interfaccia utente visibile. Eseguendo i test in background, Selenium puรฒ far risparmiare tempo e risorse e allo stesso tempo aiutare a identificare problemi che potrebbero non essere evidenti in un ambiente di test tradizionale basato sull'interfaccia utente. Ciรฒ include problemi relativi alle prestazioni e problemi di layout che possono diventare evidenti solo in un ambiente senza testa. Tuttavia, รจ importante tenere presenti i limiti dei test headless e bilanciarli con i metodi tradizionali basati sull'interfaccia utente per garantire una copertura completa dei test.

Esempi popolari di browser headless

Sono disponibili molti browser headless, ciascuno con caratteristiche e vantaggi unici, che li rendono adatti a diversi casi d'uso. Ne discutiamo di seguito: -

PhantomJS

PhantomJS รจ un browser headless che utilizza WebKit come motore di rendering e supporta vari standard web come HTML5, CSS3 e JavaScript. Puรฒ essere utilizzato per attivitร  di cattura dello schermo e automazione delle pagine. รˆ open source e compatibile con piรน sistemi operativi.

Esempio di Selenium con Headless PhantomJS dentro 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 รจ il browser piรน popolare del pianeta e offre anche una funzionalitร  headless. Puรฒ essere utilizzato su piรน piattaforme e supporta linguaggi e framework di programmazione. I suoi strumenti di debug integrati e l'ampia documentazione ne semplificano l'utilizzo e la risoluzione di eventuali problemi che potrebbero verificarsi durante i test.

Esempio di Headless Chrome 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 รจ un browser Web popolare che puรฒ essere utilizzato anche come browser headless a scopo di test. Uno dei vantaggi dell'utilizzo Firefox essendo un browser headless รจ la sua natura leggera, che lo rende un'opzione versatile per i test su vari sistemi operativi. Inoltre, con la sua ampia documentazione e il supporto della comunitร , Firefox รจ una scelta eccellente per coloro che desiderano sperimentare la tecnologia dei browser headless.

Esempio di senza testa 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()

Vantaggi del test del browser headless

  • Esecuzione del test piรน rapida
  • Test convenienti
  • Migliore copertura dei test
  • Flessibilitร  nell'esecuzione dei test
  • Integrazione con pipeline CI/CD

Svantaggi del test del browser headless

  • Mancanza di GUI
  • Difficoltร  nel debug
  • Supporto browser limitato

HTMLUnitDriver

HTML UnitDriver รจ il browser headless dall'implementazione piรน leggera e veloce per WebDriver. รˆ basato su HtmlUnit. รˆ noto come Driver del browser senza testaรˆ uguale a Chrome, IE o FireFox driver, ma non ha una GUI quindi non รจ possibile vedere l'esecuzione del test sullo schermo.

Caratteristiche del driver dell'unitร  HTML

  • Supporto per i protocolli HTTPS e HTTP
  • Supporto per le risposte HTML (cliccando su collegamenti, inviando moduli, percorrendo il modello DOM del documento HTML ecc.)
  • Supporto per i cookie
  • Supporto per server proxy
  • Supporto per l'autenticazione di base e NTLM
  • Ottimo JavaCopione supporto
  • Supporto per i metodi di invio GET e POST
  • Possibilitร  di personalizzare le intestazioni delle richieste inviate al server
  • Possibilitร  di determinare se le risposte non riuscite dal server devono generare eccezioni o devono essere restituite come pagine del tipo appropriato

Passaggi per utilizzare il driver HTMLUnit con Selenium

Passo 1) In Eclipse, copia il seguente codice. Aggiungi i file della libreria standard selenium al progetto. Non sono richiesti file jar aggiuntivi.

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();			
         }		
}

Passaggio 2) Esegui il codice. Noterai che nessun browser viene avviato e i risultati vengono visualizzati nella console.

Passaggi per utilizzare il driver HTMLUnit con Selenium

Vantaggi del driver dell'unitร  HTML:

  • Poichรฉ non utilizza alcuna GUI per i test, i test verranno eseguiti in background senza alcuna interruzione visiva
  • Rispetto a tutte le altre istanze l'esecuzione รจ piรน veloce
  • Per eseguire i tuoi test tramite il driver HtmlUnit puoi anche selezionare altre versioni di browser
  • รˆ indipendente dalla piattaforma ed รจ piรน semplice eseguire diversi test contemporaneamente. Ideale per Caricare i test.

limitazioni:

  • Non puรฒ emulare altri browser JavaComportamento dello script

PhantomJS

PhantomJS รจ un browser headless con JavaAPI script. รˆ una soluzione ottimale per il test di siti Web Headless, per accedere e manipolare pagine Web e viene fornito con l'API DOM standard.

Per utilizzare PhantomJS con Seleniun, รจ necessario utilizzare GhostDriver. GhostDriver รจ un'implementazione del protocollo Webdriver Wire in semplice JS per PhantomJS.

L'ultima versione di PhatomJS ha integrato GhostDriver e non รจ necessario installarlo separatamente.

Ecco come funziona il sistema-

PhantomJS

Passi da eseguire Selenium con PhatomJS

Passo 1) Hai bisogno Eclipse con Selenium installato

Passo 2) Scarica PhantomJS Qui.

Passaggi per eseguire Selenium Con PhatomJS

Passo 3) Estrai la cartella scaricata in Programmi

Passaggi per eseguire Selenium Con PhatomJS

Passo 4) Scarica il driver PhantomJS da Qui.. Aggiungi il barattolo al tuo progetto

Passaggi per eseguire Selenium Con PhatomJS

Passo 5) Incolla il seguente codice in 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();			
           }		
}

Passo 6) Esegui il codice. Osserverai che l'output viene mostrato nella console e nessun browser viene avviato.

NOTA: Alla prima esecuzione, in base alle tue impostazioni, potresti ricevere un avviso di sicurezza da Windows per consentire l'esecuzione di PhantomJS. Fare clic su Consenti accesso.

Passaggi per eseguire Selenium Con PhatomJS

Molte organizzazioni utilizzano Phantom.JS per vari scopi, ad esempio,

  • Test senza testa
  • Screen Capture
  • Automazione della pagina
  • rete di Monitoraggio
  • Per eseguire il rendering degli screenshot della dashboard per i propri utenti
  • Per eseguire unit test sulla riga di comando
  • Per generare manuali per i dipendenti da HTML a PDF
  • Combinato con QUnit per la suite di test

Sintesi

Per testare rapidamente l'applicazione in vari browser e senza alcuna interruzione visiva, browser headless Collaudo viene utilizzato. Grazie alla sua velocitร , accuratezza e facilitร  di accesso alle funzionalitร , HTML unit driver e PhantomJS stanno guadagnando popolaritร  per i test di automazione dei browser headless. Seguendo alcuni semplici passaggi, scoprirai quanto facilmente questi strumenti possono essere integrati con altri strumenti e possono eseguire il codice di test.

Riassumi questo post con: