HTMLUnitDriver v Selenium: Výukový program pro bezhlavý prohlížeč

⚡ Chytré shrnutí

HtmlUnitDriver je nejrychlejší bezhlavá implementace Selenium WebDriver, zatímco PhantomJS, kdysi populární prohlížeč založený na GhostDriveru, je od roku 2018 zastaralý a nyní jej nahrazuje Chrome bez headlessu. Firefoxa Playwright pro moderní automatizované pracovní postupy.

  • 🤖 Bezhlavý koncept: Běh Selenium testy bez viditelného grafického uživatelského rozhraní, aby se ušetřilo CPU, paměť a doba provádění napříč kanály CI.
  • ⚙️ Síla ovladače HTMLUnitDriver: Pure Java engine, žádný externí binární soubor, ideální pro rychlé kontroly na úrovni HTTP a rychlé interakce s formuláři.
  • ???? Zastarání PhantomJS: Vývoj PhantomJS byl zastaven v roce 2018; týmy by měly migrovat na headless Chrome, headless Firefox, nebo dramatik.
  • (Tj. Moderní alternativy: Bezhlavý Chrome a Firefox nabídnout přesné JavaVykreslování skriptů, protokol DevTools a lepší ladění.
  • 🧪 Nejlepší případy použití: Kouřové testy, regresní sady, zátěžové testování a úlohy kontinuální integrace na headless Linuxových běžcích.

HTMLUnitDriver v Selenium

Headless prohlížeč je webový prohlížeč bez grafického uživatelského rozhraní. Může běžet na pozadí bez vizuálních efektů.tracNabízí efektivní a účinný způsob testování webových aplikací a zároveň šetří čas a zdroje. V tomto článku se zabýváme tím, co je headless prohlížeč, kdy použít headless testování prohlížeče a jak ho provádět pomocí Selenium HtmlUnitDriver a PhantomJS.

Co je to bezhlavý prohlížeč?

Bezhlavý prohlížeč je webový prohlížeč bez grafického uživatelského rozhraníTento program se chová stejně jako běžný prohlížeč, ale během spuštění nezobrazuje žádné okno s grafickým rozhraním.

Mezi příklady ovladačů bezhlavého prohlížeče patří:

  • HtmlUnit
  • Duch
  • PhantomJS (zastaralé)
  • ZombieJS
  • Watir- webový ovladač
  • Bezhlavý Chrome
  • Bezhlavý Firefox

Kdy použít bezhlavé testování prohlížeče?

V dnešní digitální době jsou webové aplikace vytvářeny tak, aby byly kompatibilní s širokou škálou zařízení a platforem. To představuje výzvu pro vývojáře, kteří musí zajistit, aby jejich aplikace fungovaly bezproblémově v různých prostředích. Bezheadsové testování v prohlížečích je ideálním řešením, protože umožňuje vývojářům validovat jejich webové aplikace bez grafického uživatelského rozhraní. Pomocí bezheadsového testování v prohlížečích mohou vývojáři rychle pokrýt složité webové aplikace s mnoha komponentami a závislostmi, což dláždí cestu k rychlejšímu vývoji, menšímu počtu chyb a spokojenějším uživatelům.

Bezhlavé testování prohlížeče s Selenium

Selenium je výkonný nástroj pro bezheadless testování prohlížečů, který umožňuje vývojářům spouštět automatizované testy bez viditelného uživatelského rozhraní. Spouštěním testů na pozadí, Selenium šetří čas a zdroje a zároveň pomáháping identifikovat problémy, které nemusí být zřejmé v tradičním testovacím prostředí založeném na uživatelském rozhraní. To zahrnuje problémy s výkonem a rozvržením, které se projeví pouze v bezheads testovacím prostředí. Je však důležité vyvážit bezheads testování s tradičními testy založenými na uživatelském rozhraní, aby bylo zajištěno plné pokrytí.

Oblíbené příklady bezhlavých prohlížečů

K dispozici je mnoho headless prohlížečů, každý s vlastními funkcemi a výhodami, díky čemuž jsou vhodné pro různé případy použití. Probereme je níže.

PhantomJS

Oznámení o ukončení podpory: Aktivní vývoj PhantomJS byl zastaven v roce 2018 a projekt již není udržován. Nové projekty by měly preferovat headless Chrome, headless Firefoxnebo Dramatik pro moderní bezhlavou automatizaci. Níže uvedený příklad PhantomJS je uveden pouze pro referenci.

PhantomJS je headless prohlížeč, který používá WebKit jako renderovací engine a podporuje webové standardy jako HTML5, CSS3 a… JavaSkript. Lze jej použít pro snímání obrazovky a automatizaci stránek. Je open-source a je kompatibilní s více operačními systémy.

Příklad Selenium se vstupem Headless PhantomJS 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()

chróm

Chrome je nejoblíbenější prohlížeč na světě a nabízí i headless režim. Lze jej používat na mnoha platformách a podporuje populární programovací jazyky a frameworky. Jeho vestavěné ladicí nástroje a rozsáhlá dokumentace usnadňují používání a řešení problémů, které mohou nastat během testování.

Příklad Headless Chrome s 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 je oblíbený webový prohlížeč, který lze také použít jako headless prohlížeč pro testování. Jednou z výhod použití Firefox jakožto bezheadless prohlížeč je jeho nízká velikost, což z něj činí všestrannou možnost pro testování na různých operačních systémech. V kombinaci s rozsáhlou dokumentací a komunitní podporou, Firefox je vynikající volbou pro týmy experimentující s automatizací prohlížečů bez headless.

Příklad Headless Firefox s 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()

Výhody bezhlavého testování prohlížeče

  • Rychlejší provedení testu
  • Nákladově efektivní testování
  • Lepší pokrytí testy
  • Flexibilita při provádění testů
  • Snadnější integrace s CI/CD pipelines

Nevýhody bezhlavého testování prohlížeče

  • Chybí viditelné grafické uživatelské rozhraní pro ruční kontrolu
  • Ladění může být bez obrazovky obtížnější
  • Omezené pokrytí chování specifického pro prohlížeč

HtmlUnitDriver

HtmlUnitDriver je nejlehčí a nejrychlejší implementace headless prohlížeče pro Selenium WebDriver. Je založen na HtmlUnit a je také známý jako Bezhlavý ovladač prohlížečeChová se jako Chrome, IE nebo Firefox ovladač, ale nemá grafické uživatelské rozhraní, takže provedení testu není na obrazovce viditelné. HtmlUnitDriver je stále udržován a distribuován prostřednictvím org.seleniumhq.selenium:htmlunit3-driver Mavenův artefakt.

Vlastnosti HtmlUnitDriveru:

  • Podpora protokolů HTTPS a HTTP
  • Podpora HTML odpovědí (kliknutí na odkazy, odesílání formulářů, procházení DOM modelu HTML dokumentu a další)
  • Podpora pro soubory cookie
  • Podpora proxy serveru
  • Podpora základní a NTLM autentizace
  • Solidní JavaScénář podpora
  • Podpora metod odesílání GET a POST
  • Schopnost přizpůsobit hlavičky požadavků odesílaných na server
  • Možnost řídit, zda selhávající odpovědi ze serveru mají vyvolat výjimky, nebo zda mají být vráceny jako stránky příslušného typu

Kroky k použití HtmlUnitDriver s Selenium

Krok 1) In Eclipse, zkopírujte následující kód. Přidejte standardní Selenium knihovní soubory do projektu. Nejsou vyžadovány žádné další soubory JAR.

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

Krok 2) Spusťte kód. Všimnete si, že se nespustí žádný prohlížeč a výsledky se zobrazí v konzoli.

Kroky k použití HtmlUnitDriver s Selenium

Výhody HtmlUnitDriveru

  • Protože nepoužívá žádné grafické uživatelské rozhraní, testy běží na pozadí bez vizuálního přerušení.
  • Ve srovnání s jinými instancemi ovladačů je provádění rychlejší
  • Při spouštění testů pomocí HtmlUnitDriver můžete také emulovat různé verze prohlížečů.
  • Je nezávislý na platformě a snadno s ním lze spustit několik testů současně. Je ideální pro zátěžové testování.

Omezení:

  • Nelze plně napodobit JavaChování skriptů každého skutečného prohlížečového enginu

PhantomJS

Připomenutí: PhantomJS je zastaralý a již není udržován. Pro novou práci bez headlessu použijte Selenium s bezhlavým Chromem nebo Firefoxnebo přejděte na Dramatik. Níže uvedená část zůstává pouze pro starší reference.

PhantomJS je headless prohlížeč s JavaScript API. Historicky se používalo pro headless testování webových stránek, přístup k webovým stránkám a jejich manipulaci s nimi a je dodáváno se standardním DOM API.

Použití PhantomJS s Selenium, potřebujete GhostDriver. GhostDriver je implementace protokolu WebDriver Wire v prostém jazyce JavaSkript pro PhantomJS.

Pozdější verze PhantomJS integrovaný GhostDriver, takže není nutné jej instalovat samostatně.

Zde je návod, jak systém funguje:

PhantomJS

Kroky k běhu Selenium s PhantomJS

Krok 1) Potřebujete Eclipse s Selenium nainstalován.

Krok 2) Stáhněte si PhantomJS zde.

Kroky ke spuštění Selenium S PhantomJS

Krok 3) Extracstaženou složku do složky Program Files.

Kroky ke spuštění Selenium S PhantomJS

Krok 4) Stáhněte si ovladač PhantomJS z zdePřidejte JAR do svého projektu.

Kroky ke spuštění Selenium S PhantomJS

Krok 5) Vložte následující kód do 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();			
           }		
}

Krok 6) Spusťte kód. Výstup se zobrazí v konzoli a prohlížeč se nespustí.

POZNÁMKA: Při prvním spuštění se v závislosti na nastavení může zobrazit bezpečnostní varování od Windows abyste povolili spuštění PhantomJS. Klikněte Povolit přístup.

Kroky ke spuštění Selenium S PhantomJS

Mnoho organizací historicky používalo PhantomJS pro úkoly, jako například:

  • Bezhlavé testování
  • Snímání obrazovky
  • Automatizace stránek
  • Sledování sítě
  • Vykreslování snímků obrazovky řídicího panelu pro uživatele
  • Spouštění jednotkových testů na příkazovém řádku
  • Generování zaměstnaneckých příruček z HTML do PDF
  • Kombinace s QUnit pro testovací sadu

Pro novou práci nahraďte tyto případy užití PhantomJS bezheadlessovým Chromem, bezheadless Firefoxnebo Playwriter, které průběžně dostávají aktualizace zabezpečení a vykreslování.

Nejčastější dotazy

Bezhlavý prohlížeč je webový prohlížeč, který běží bez grafického uživatelského rozhraní. Selenium, bezhlavé ovladače jako HtmlUnitDriver, bezhlavý Chrome a bezhlavý Firefox spouštět testy na pozadí, což šetří zdroje a zrychluje automatizační sady.

Ne. Vývoj PhantomJS byl v roce 2018 pozastaven a projekt již není udržován. Selenium také odstranil PhantomJSDriver z nedávných verzí. Nové testy by měly používat headless Chrome, headless Firefox, nebo místo toho Dramatik.

HtmlUnitDriver je čistě Java engine, velmi rychlý a nepotřebuje žádný binární soubor prohlížeče, ale má omezené JavaVěrnost skriptu. Bezhlavý Chrome používá skutečný engine Blink, takže vykresluje moderní JavaWeby s velkým množstvím skriptů přesně, za cenu vyšší spotřeby zdrojů.

Použijte Selenium s bezhlavým Chromem nebo bezhlavým Firefox pro testování s přesností na úrovni prohlížeče nebo pro paralelní automatizaci napříč prohlížeči použijte Playwright. Tyto nástroje dostávají aktivní bezpečnostní aktualizace a podporují moderní funkce, jako je protokol DevTools a síťové zachycení.

Nástroje s umělou inteligencí dokáží automaticky opravit lokátory při změně DOM, předpovídat nestabilní testy a analyzovat snímky obrazovky pro vizuální regrese. To snižuje počet přerušených běhů bez nutnosti čtení v CI a pomáhá týmům QA udržovat stabilitu. Selenium potrubí s menším manuálním zásahem.

Ano. Moderní asistenti s umělou inteligencí mohou generovat Selenium Skripty WebDriveru v Java, Pythonnebo JavaSkript z kroků v prosté angličtině, včetně možností headless pro Chrome nebo FirefoxPřed spuštěním v CI vždy zkontrolujte vygenerovaný kód, zda obsahuje správné čekací doby, selektory a zabezpečení.

Shrňte tento příspěvek takto: