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.

  • 🤖 Koncepcja bezgłowa: Uruchom Selenium testy bez widocznego interfejsu graficznego w celu oszczędzania procesora, pamięci i czasu wykonywania w różnych procesach CI.
  • ⚙️ Siła HtmlUnitDriver: Czysty Java silnik, bez zewnętrznego pliku binarnego, idealny do szybkich kontroli na poziomie HTTP i szybkich interakcji z formularzami.
  • 🚀 Wycofanie PhantomJS: Rozwój PhantomJS został zatrzymany w 2018 r.; zespoły powinny przejść na przeglądarkę Chrome bez interfejsu graficznego, Firefoxlub dramatopisarz.
  • Nowoczesne alternatywy: Chrome bezgłowy i Firefox oferować dokładne JavaRenderowanie skryptów, protokół DevTools i lepsze debugowanie.
  • 🧪 Najlepsze przypadki użycia: Kontrole dymowe, zestawy regresyjne, testy obciążeniowe i zadania ciągłej integracji na serwerach Linux bez interfejsu graficznego.

HTMLUnitDriver w Selenium

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.

Kroki korzystania z HtmlUnitDriver z Selenium

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:

PhantomJS

Kroki do uruchomienia Selenium z PhantomJS

Krok 1) Musisz Eclipse w Selenium zainstalowany.

Krok 2) Pobierz PhantomJS w tym miejscu.

Kroki do uruchomienia Selenium Z PhantomJS

Krok 3) ExtracPrzenieś pobrany folder do Program Files.

Kroki do uruchomienia Selenium Z PhantomJS

Krok 4) Pobierz sterownik PhantomJS ze strony w tym miejscuDodaj plik JAR do swojego projektu.

Kroki do uruchomienia Selenium Z PhantomJS

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.

Kroki do uruchomienia Selenium Z PhantomJS

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.

FAQ

Przeglądarka bezgłowa to przeglądarka internetowa działająca bez graficznego interfejsu użytkownika. Selenium, sterowniki bezgłowe, takie jak HtmlUnitDriver, bezgłowy Chrome i bezgłowy Firefox wykonywać testy w tle, co oszczędza zasoby i przyspiesza działanie pakietów automatyzacji.

Nie. Rozwój PhantomJS został zawieszony w 2018 roku i projekt nie jest już utrzymywany. Selenium usunięto również PhantomJSDriver z ostatnich wydań. Nowe testy powinny korzystać z przeglądarki Chrome bez interfejsu użytkownika, Firefoxlub Dramatopisarz.

HtmlUnitDriver to czysty Java silnik, bardzo szybki i nie wymagający binarnego pliku przeglądarki, ale ma ograniczone możliwości JavaWierność skryptom. Headless Chrome korzysta z prawdziwego silnika Blink, dzięki czemu renderuje nowoczesne JavaDokładne tworzenie witryn z dużą ilością skryptów, kosztem większego wykorzystania zasobów.

Zastosowanie Selenium z bezgłowym Chrome lub bezgłowym Firefox do testowania z dokładnością do przeglądarki lub skorzystaj z Playwrighta do równoległej automatyzacji między przeglądarkami. Narzędzia te otrzymują aktywne aktualizacje zabezpieczeń i obsługują nowoczesne funkcje, takie jak protokół DevTools i przechwytywanie sieci.

Narzędzia oparte na sztucznej inteligencji mogą automatycznie naprawiać lokalizatory w przypadku zmian DOM, przewidywać niestabilne testy i analizować zrzuty ekranu pod kątem regresji wizualnych. Zmniejsza to liczbę nieudanych uruchomień bezgłowych w CI i pomaga zespołom kontroli jakości utrzymać stabilność. Selenium rurociągi wymagające mniejszej ingerencji ręcznej.

Tak. Współcześni asystenci AI mogą generować Selenium Skrypty WebDriver w Java, Pythonlub JavaSkrypt z prostych kroków w języku angielskim, obejmujący opcje bezgłowe dla przeglądarki Chrome lub FirefoxZawsze sprawdzaj wygenerowany kod pod kątem poprawności waitów, selektorów i zabezpieczeń przed uruchomieniem go w trybie CI.

Podsumuj ten post następująco: