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.






