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.

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.
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:
Kroky k běhu Selenium s PhantomJS
Krok 1) Potřebujete Eclipse s Selenium nainstalován.
Krok 2) Stáhněte si PhantomJS zde.
Krok 3) Extracstaženou složku do složky Program Files.
Krok 4) Stáhněte si ovladač PhantomJS z zdePřidejte JAR do svého projektu.
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.
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í.






