HTMLUnitDriver w Selenium:Samouczek dotyczący przeglądarki bezgłowej
⚡ Inteligentne podsumowanie
HtmlUnitDriver to najszybsza implementacja bezgłowa Selenium WebDriver, a PhantomJS, niegdyś popularna przeglądarka bezgłowa oparta na GhostDriver, jest przestarzała od 2018 r. i zastąpiona przez przeglądarkę bezgłową Chrome, Firefoxi Playwright dla nowoczesnych przepływów pracy automatyzowanych.

Przeglądarka bezgłowa to przeglądarka internetowa bez graficznego interfejsu użytkownika. Może działać w tle bez wyświetlania obrazu.tracOferuje wydajny i efektywny sposób testowania aplikacji internetowych, oszczędzając czas i zasoby. W tym artykule dowiesz się, czym jest przeglądarka bezgłowa, kiedy stosować testowanie przeglądarki bezgłowej i jak je przeprowadzać za pomocą Selenium HtmlUnitDriver i PhantomJS.
Czym jest przeglądarka bezgłowa?
Przeglądarka bezgłowa to przeglądarka internetowa bez graficznego interfejsu użytkownikaProgram ten zachowuje się jak zwykła przeglądarka, ale podczas działania nie wyświetla żadnego okna GUI.
Oto kilka przykładów sterowników przeglądarki bez interfejsu graficznego:
- Jednostka HTML
- Ghost
- PhantomJS (przestarzałe)
- ZombieJS
- Watir-sterownik internetowy
- Bezgłowy Chrome
- Bezgłowy Firefox
Kiedy stosować bezgłowe testowanie przeglądarki?
W dzisiejszej erze cyfrowej aplikacje webowe są tworzone z myślą o kompatybilności z szeroką gamą urządzeń i platform. Stanowi to wyzwanie dla programistów, którzy muszą zapewnić bezproblemowe działanie swoich aplikacji w różnych środowiskach. Testowanie w przeglądarce bez interfejsu graficznego (headless) to idealne rozwiązanie, ponieważ pozwala programistom walidować swoje aplikacje webowe bez graficznego interfejsu użytkownika. Dzięki testowaniu w przeglądarce bez interfejsu graficznego, programiści mogą szybko testować złożone aplikacje webowe z wieloma komponentami i zależnościami, torując drogę do szybszego rozwoju, mniejszej liczby błędów i większego zadowolenia użytkowników.
Bezgłowe testowanie przeglądarki za pomocą Selenium
Selenium to potężne narzędzie do testowania w przeglądarce headless, pozwalające programistom na uruchamianie zautomatyzowanych testów bez widocznego interfejsu użytkownika. Uruchamiając testy w tle, Selenium oszczędza czas i zasoby, a także pomagaping Zidentyfikuj problemy, które mogą nie być widoczne w tradycyjnym środowisku testowym opartym na interfejsie użytkownika. Dotyczy to problemów z wydajnością i układem, które ujawniają się dopiero w środowisku bezgłowym. Ważne jest jednak, aby zrównoważyć testowanie bezgłowe z tradycyjnymi testami opartymi na interfejsie użytkownika, aby zapewnić pełne pokrycie.
Popularne przykłady przeglądarek bezgłowych
Dostępnych jest wiele przeglądarek bezgłowych, z których każda ma swoje własne funkcje i zalety, dzięki czemu nadaje się do różnych zastosowań. Omówimy je poniżej.
PhantomJS
Informacja o wycofaniu: Aktywny rozwój PhantomJS zakończył się w 2018 roku, a projekt nie jest już utrzymywany. Nowe projekty powinny preferować przeglądarkę Headless Chrome, Firefoxlub Dramaturg dla nowoczesnej automatyzacji bezgłowej. Poniższy przykład PhantomJS jest dołączony wyłącznie w celach informacyjnych.
PhantomJS to przeglądarka bezgłowa wykorzystująca silnik renderujący WebKit i obsługująca standardy internetowe, takie jak HTML5, CSS3 i JavaSkrypt. Można go używać do przechwytywania ekranu i automatyzacji stron. Jest on dostępny na licencji open source i jest kompatybilny z wieloma systemami operacyjnymi.
Przykład Selenium z Headless PhantomJS w 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()
Chrom
Chrome to najpopularniejsza przeglądarka na świecie, oferująca również tryb headless. Działa na wielu platformach i obsługuje popularne języki programowania oraz frameworki. Wbudowane narzędzia do debugowania i obszerna dokumentacja ułatwiają korzystanie z przeglądarki i rozwiązywanie problemów, które mogą pojawić się podczas testów.
Przykład bezgłowego Chrome z 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 to popularna przeglądarka internetowa, której można używać również jako przeglądarki bezgłowej do testowania. Jedną z zalet korzystania z niej jest Firefox Zaletą przeglądarki bezgłowej jest jej niewielka waga, co czyni ją wszechstronną opcją do testowania w różnych systemach operacyjnych. W połączeniu z obszerną dokumentacją i wsparciem społeczności, Firefox jest doskonałym wyborem dla zespołów eksperymentujących z automatyzacją przeglądarki bez interfejsu użytkownika.
Przykład Bezgłowego Firefox w 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()
Zalety bezgłowego testowania przeglądarki
- Szybsze wykonanie testu
- Opłacalne testowanie
- Lepsze pokrycie testami
- Elastyczność w przeprowadzaniu testów
- Łatwiejsza integracja z procesami CI/CD
Wady bezgłowego testowania przeglądarek
- Brak widocznego interfejsu graficznego do ręcznej inspekcji
- Debugowanie może być trudniejsze bez ekranu
- Ograniczony zakres zachowań specyficznych dla danej przeglądarki
Sterownik HTMLUnitDriver
HtmlUnitDriver to najlżejsza i najszybsza implementacja przeglądarki bezgłowej dla Selenium WebDriver. Oparty na HtmlUnit, znany również jako Bezgłowy sterownik przeglądarki. Zachowuje się jak Chrome, IE lub Firefox Sterownik, ale nie ma interfejsu graficznego, więc wykonanie testu nie jest widoczne na ekranie. HtmlUnitDriver jest nadal utrzymywany i dystrybuowany za pośrednictwem org.seleniumhq.selenium:htmlunit3-driver Artefakt Maven.
Cechy HtmlUnitDriver:
- Obsługa protokołów HTTPS i HTTP
- Obsługa odpowiedzi HTML (klikanie linków, przesyłanie formularzy, przeglądanie modelu DOM dokumentu HTML i wiele więcej)
- Wsparcie dla plików cookies
- Obsługa serwera proxy
- Obsługa uwierzytelniania podstawowego i NTLM
- Solidne JAVASCRIPT wsparcie
- Obsługa metod przesyłania GET i POST
- Możliwość dostosowania nagłówków żądań wysyłanych do serwera
- Możliwość kontrolowania, czy błędne odpowiedzi z serwera powinny zgłaszać wyjątki, czy być zwracane jako strony odpowiedniego typu
Kroki korzystania z HtmlUnitDriver z Selenium
Krok 1) In Eclipse, skopiuj poniższy kod. Dodaj standardowy Selenium Pliki biblioteki do projektu. Nie są wymagane żadne dodatkowe pliki 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) Uruchom kod. Zauważysz, że żadna przeglądarka nie jest uruchamiana, a wyniki są wyświetlane w konsoli.
Korzyści z HtmlUnitDriver
- Ponieważ nie korzysta z żadnego interfejsu graficznego, testy są wykonywane w tle bez zakłóceń wizualnych
- W porównaniu z innymi wystąpieniami sterownika, wykonanie jest szybsze
- Możesz również emulować różne wersje przeglądarek podczas uruchamiania testów za pomocą HtmlUnitDriver
-
Jest niezależny od platformy i umożliwia łatwe przeprowadzanie kilku testów jednocześnie. Idealnie nadaje się do testowanie obciążenia.
Ograniczenia:
- Nie może w pełni emulować JavaZachowanie skryptów każdej prawdziwej przeglądarki
PhantomJS
Przypomnienie: PhantomJS jest przestarzały i nie jest już rozwijany. Do nowych prac bez interfejsu graficznego użyj Selenium z bezgłowym Chrome'em lub Firefoxlub przejdź do Playwright. Poniższa sekcja pozostaje wyłącznie w celach informacyjnych.
PhantomJS to przeglądarka bezgłowa z JavaAPI skryptów. Historycznie było używane do testowania witryn internetowych bez interfejsu graficznego, uzyskiwania dostępu do stron internetowych i manipulowania nimi. Jest dostarczane ze standardowym API DOM.
Aby użyć PhantomJS z Selenium, potrzebujesz GhostDriver. GhostDriver jest implementacją protokołu WebDriver Wire w prostym języku JavaSkrypt dla PhantomJS.
Późniejsze wersje PhantomJS zintegrowany GhostDriver, więc nie ma potrzeby instalowania go osobno.
Oto jak działa ten system:
Kroki do uruchomienia Selenium z PhantomJS
Krok 1) Musisz Eclipse w Selenium zainstalowany.
Krok 2) Pobierz PhantomJS w tym miejscu.
Krok 3) ExtracPrzenieś pobrany folder do Program Files.
Krok 4) Pobierz sterownik PhantomJS ze strony w tym miejscuDodaj plik JAR do swojego projektu.
Krok 5) Wklej poniższy kod 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) Uruchom kod. Zobaczysz wynik w konsoli, a przeglądarka nie zostanie uruchomiona.
UWAGA: Podczas pierwszego uruchomienia, w zależności od ustawień, może pojawić się ostrzeżenie dotyczące bezpieczeństwa Windows aby umożliwić uruchomienie PhantomJS. Kliknij Zezwalaj na dostęp.
Wiele organizacji od dawna używa PhantomJS do zadań takich jak:
- Testowanie bezgłowe
- Zrzut ekranu
- Automatyzacja stron
- Monitorowanie sieci
- Tworzenie zrzutów ekranu pulpitu nawigacyjnego dla użytkowników
- Uruchamianie testów jednostkowych w wierszu poleceń
- Generowanie podręczników dla pracowników z formatu HTML do formatu PDF
- Łączenie z QUnit w celu uzyskania zestawu testów
W przypadku nowej pracy zastąp te przypadki użycia PhantomJS bezgłowym Chrome, bezgłowym Firefoxlub Playwright, które otrzymują bieżące aktualizacje zabezpieczeń i renderowania.






