HTMLUnitDriver v Selenium
Bezhlavý prohlížeč je webový prohlížeč bez grafického uživatelského rozhraní. Může běžet na pozadí bez vizuálního rušení. Nabízí efektivní a efektivní způsob testování webových aplikací a zároveň šetří čas a zdroje. V tomto tutoriálu se ponoříme do toho, co je to bezhlavý prohlížeč, kdy použít testování prohlížeče bez hlavy a jak jej provést pomocí Selenium.
Co je to Headless Browser?
Bezhlavý prohlížeč je webový prohlížeč bez grafického uživatelského rozhraní. Tento program se bude chovat jako prohlížeč, ale nebude zobrazovat žádné GUI.
Některé příklady bezhlavých ovladačů zahrnují
- HtmlUnit
- Duch
- PhantomJS
- ZombieJS
- Watir- webový ovladač
Kdy použít bezhlavé testování prohlížeče?
V dnešní digitální době jsou webové aplikace vyvíjeny tak, aby byly kompatibilní s širokou škálou zařízení a platforem. To často představuje výzvu pro vývojáře webových stránek, kteří potřebují zajistit bezproblémové fungování jejich aplikací na všech těchto platformách. Bezhlavé testování prohlížeče je ideálním řešením tohoto problému, protože umožňuje vývojářům testovat své webové aplikace bez potřeby grafického uživatelského rozhraní. Pomocí bezhlavého testování prohlížeče mohou vývojáři snadno testovat složité webové aplikace s více komponentami a závislostmi, čímž dláždí cestu pro rychlejší vývoj, kód bez chyb a spokojené uživatele.
Bezhlavé testování prohlížeče s Selenium
Selenium je výkonný nástroj pro bezhlavé testování prohlížeče, který umožňuje vývojářům spouštět automatizované testy bez potřeby viditelného uživatelského rozhraní. Spuštěním testů na pozadí Selenium může ušetřit čas a zdroje a zároveň pomoci identifikovat problémy, které nemusí být zjevné v tradičním testovacím prostředí založeném na uživatelském rozhraní. To zahrnuje problémy související s výkonem a problémy s rozložením, které se mohou projevit pouze v bezhlavém nastavení. Je však důležité mít na paměti omezení bezhlavého testování a vyvážit je tradičními metodami založenými na uživatelském rozhraní, aby bylo zajištěno komplexní pokrytí testováním.
Oblíbené příklady bezhlavých prohlížečů
K dispozici je mnoho bezhlavých prohlížečů, z nichž každý má své vlastní jedinečné funkce a výhody, díky čemuž je vhodný pro různé případy použití. Diskutujeme o nich níže: -
PhantomJS
PhantomJS je bezhlavý prohlížeč, který jako vykreslovací engine využívá WebKit a podporuje různé webové standardy, jako jsou HTML5, CSS3 a JavaSkript. Lze jej použít pro snímání obrazovky a úlohy automatizace 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 planetě a nabízí také bezhlavou funkci. Lze jej použít na více platformách a podporuje programovací jazyky a rámce. Jeho vestavěné ladicí nástroje a rozsáhlá dokumentace usnadňují používání a odstraňování 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 populární webový prohlížeč, který lze použít také jako bezhlavý prohlížeč pro testovací účely. Jedna z výhod používání Firefox jako bezhlavý prohlížeč je jeho lehká povaha, což z něj činí všestrannou možnost pro testování na různých operačních systémech. Navíc díky rozsáhlé dokumentaci a podpoře komunity Firefox je vynikající volbou pro ty, kteří chtějí experimentovat s technologií bezhlavého prohlížeče.
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í testováním
- Flexibilita při provádění testů
- Integrace s CI/CD potrubím
Nevýhody bezhlavého testování prohlížeče
- Nedostatek GUI
- Potíže s laděním
- Omezená podpora prohlížeče
HTMLUnitDriver
HTML UnitDriver je nejlehčí a nejrychlejší implementační bezhlavý prohlížeč pro WebDriver. Je založen na HtmlUnit. Je známá jako Bezhlavý ovladač prohlížeče. Je to stejné jako Chrome, IE nebo FireFox ovladač, ale nemá GUI, takže na obrazovce není vidět provedení testu.
Vlastnosti ovladače jednotky HTML
- Podpora protokolů HTTPS a HTTP
- Podpora HTML odpovědí (klikání na odkazy, odesílání formulářů, procházení modelu DOM dokumentu HTML atd.)
- Podpora pro soubory cookie
- Podpora proxy serveru
- Podpora základní a NTLM autentizace
- vynikající JavaScénář podpora
- Podpora metod odeslání GET a POST
- Schopnost přizpůsobit hlavičky požadavků odesílaných na server
- Schopnost určit, zda by neúspěšné odpovědi ze serveru měly vyvolat výjimky nebo by měly být vráceny jako stránky příslušného typu
Kroky k použití ovladače HTMLUnit s Selenium
Krok 1) In Eclipse, zkopírujte následující kód. Přidejte do projektu soubory standardní knihovny selenu. 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 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(); } }
Krok 2) Spusťte kód. Uvidíte, že není spuštěn žádný prohlížeč a výsledky se zobrazí v konzole.
Výhody Html Unit Driver:
- Protože k testování nepoužívá žádné grafické uživatelské rozhraní, vaše testy poběží na pozadí bez jakéhokoli vizuálního přerušení
- Ve srovnání se všemi ostatními instancemi je provádění rychlejší
- Chcete-li spustit testy prostřednictvím ovladače HtmlUnit, můžete také vybrat jiné verze prohlížeče
-
Je nezávislý na platformě a snáze spouští několik testů současně. Ideální pro Testování zatížení.
Omezení:
- Nemůže emulovat jiné prohlížeče JavaChování skriptu
PhantomJS
PhantomJS je bezhlavý prohlížeč s JavaScript API. Je to optimální řešení pro bezhlavé testování webových stránek, přístup a manipulaci s webovými stránkami a přichází se standardním DOM API.
Abyste mohli používat PhantomJS se Seleniunem, musíte použít GhostDriver. GhostDriver je implementace protokolu Webdriver Wire v jednoduchém JS pro PhantomJS.
Nejnovější verze PhatomJS má integrovaný GhostDriver a není třeba jej instalovat samostatně.
Zde je návod, jak systém funguje -
Kroky k běhu Selenium s PhatomJS
Krok 1) Potřebujete Eclipse s Selenium instalovány
Krok 2) Stáhněte si PhantomJS zde
Krok 3) Extrahujte staženou složku do Program Files
Krok 4) Stáhněte si ovladač PhantomJS z zde. Přidejte sklenici 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. Uvidíte, že se výstup zobrazí v konzole a nespustí se žádný prohlížeč.
POZNÁMKA: Při prvním spuštění se na základě vašeho nastavení může zobrazit bezpečnostní upozornění Windows aby bylo možné spustit PhantomJS. Klikněte na Povolit přístup.
Mnoho organizací používá Phantom.JS pro různé účely, např.
- Bezhlavé testování
- Screen capture
- Automatizace stránek
- Sledování sítě
- K vykreslení snímků obrazovky řídicího panelu pro jejich uživatele
- Chcete-li spustit testy jednotek na příkazovém řádku
- Generování příruček pro zaměstnance z HTML do PDF
- V kombinaci s QUnit pro testovací sadu
Shrnutí
Pro rychlé testování aplikace v různých prohlížečích a bez jakéhokoli vizuálního přerušení, bezhlavý prohlížeč Testování se používá. Díky své rychlosti, přesnosti a snadno přístupným funkcím získávají ovladače HTML jednotky a PhantomJS na popularitě pro bezhlavé testování automatizace prohlížeče. Dodržením několika jednoduchých kroků zjistíte, jak snadno lze tyto nástroje integrovat s jinými nástroji a mohou provádět testovací kód.