HTMLUnitDriver w Selenium

Przeglądarka bezgłowa to przeglądarka internetowa bez graficznego interfejsu użytkownika. Może działać w tle bez zakłóceń wizualnych. Oferuje wydajny i efektywny sposób testowania aplikacji internetowych, oszczędzając jednocześnie czas i zasoby. W tym samouczku omówimy, czym jest przeglądarka bezgłowa, kiedy używać testowania przeglądarki bezgłowej i jak ją przeprowadzić za pomocą Selenium.

Co to jest przeglądarka bezgłowa?

Przeglądarka bezgłowa to przeglądarka internetowa bez graficznego interfejsu użytkownika. Ten program będzie zachowywał się jak przeglądarka, ale nie będzie wyświetlał żadnego GUI.

Oto niektóre przykłady kierowców bezgłowych

  • Jednostka HTML
  • Ghost
  • PhantomJS
  • ZombieJS
  • Watir-sterownik internetowy

Kiedy stosować bezgłowe testowanie przeglądarki?

W dzisiejszej erze cyfrowej aplikacje internetowe są opracowywane tak, aby były kompatybilne z szeroką gamą urządzeń i platform. Często stanowi to wyzwanie dla deweloperów stron internetowych, którzy muszą zapewnić, że ich aplikacje będą działać bezproblemowo na tych platformach. Testowanie przeglądarki bez interfejsu graficznego jest idealnym rozwiązaniem tego problemu, ponieważ pozwala deweloperom testować swoje aplikacje internetowe bez potrzeby graficznego interfejsu użytkownika. Korzystając z testowania przeglądarki bez interfejsu graficznego, deweloperzy mogą łatwo testować złożone aplikacje internetowe z wieloma komponentami i zależnościami, torując drogę szybszemu rozwojowi, kodowi bez błędów i zadowolonym użytkownikom.

Bezgłowe testowanie przeglądarki za pomocą Selenium

Selenium jest potężnym narzędziem do testowania przeglądarki headless, pozwalającym deweloperom na uruchamianie automatycznych testów bez potrzeby widocznego interfejsu użytkownika. Dzięki uruchamianiu testów w tle, Selenium może zaoszczędzić czas i zasoby, jednocześnie pomagając zidentyfikować problemy, które mogą nie być widoczne w tradycyjnym środowisku testowym opartym na interfejsie użytkownika. Obejmuje to problemy związane z wydajnością i problemy z układem, które mogą uwidocznić się dopiero w trybie bezgłowym. Należy jednak pamiętać o ograniczeniach testów bezgłowych i zrównoważyć je z tradycyjnymi metodami opartymi na interfejsie użytkownika, aby zapewnić kompleksowy zakres testów.

Popularne przykłady przeglądarek bezgłowych

Dostępnych jest wiele przeglądarek bezgłowych, każda z własnymi unikalnymi funkcjami i zaletami, dzięki czemu nadają się do różnych zastosowań. Omawiamy je poniżej: -

PhantomJS

PhantomJS to bezgłowa przeglądarka, która wykorzystuje WebKit jako silnik renderujący i obsługuje różne standardy sieciowe, takie jak HTML5, CSS3 i JavaSkrypt. Może być używany do przechwytywania ekranu i zadań automatyzacji stron. Jest open-source i 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, która oferuje również funkcję Headless. Można go używać na wielu platformach i obsługuje języki i frameworki programowania. Wbudowane narzędzia do debugowania i obszerna dokumentacja ułatwiają obsługę i rozwiązywanie wszelkich problemów, które mogą pojawić się podczas testowania.

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óra może być również używana jako przeglądarka bezgłowa do celów testowych. Jedna z korzyści stosowania Firefox jako przeglądarka bezgłowa jest lekka, co czyni ją wszechstronną opcją do testowania na różnych systemach operacyjnych. Ponadto, dzięki obszernej dokumentacji i wsparciu społeczności, Firefox to doskonały wybór dla tych, którzy chcą poeksperymentować z technologią przeglądarek bezgłowych.

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
  • Lepszy zasięg testów
  • Elastyczność w przeprowadzaniu testów
  • Integracja z potokami CI/CD

Wady bezgłowego testowania przeglądarek

  • Brak graficznego interfejsu użytkownika
  • Trudności w debugowaniu
  • Ograniczona obsługa przeglądarek

Sterownik HTMLUnitDriver

HTML UnitDriver to najlżejsza i najszybsza bezgłowa przeglądarka obsługująca WebDriver. Opiera się na HtmlUnit. Jest znany jako Bezgłowy sterownik przeglądarki. Jest taki sam jak Chrome, IE lub FireFox sterownik, ale nie ma on GUI, więc nie można zobaczyć wykonywania testu na ekranie.

Funkcje sterownika jednostki HTML

  • Obsługa protokołów HTTPS i HTTP
  • Obsługa odpowiedzi HTML (klikanie linków, wysyłanie formularzy, przeglądanie modelu DOM dokumentu HTML itp.)
  • Wsparcie dla plików cookies
  • Obsługa serwera proxy
  • Obsługa uwierzytelniania podstawowego i NTLM
  • Doskonały JAVASCRIPT wsparcie
  • Obsługa metod przesyłania GET i POST
  • Możliwość dostosowania nagłówków żądań wysyłanych do serwera
  • Możliwość określenia, czy nieudane odpowiedzi z serwera powinny zgłaszać wyjątki, czy też powinny być zwracane jako strony odpowiedniego typu

Kroki, aby użyć sterownika HTMLUnit Selenium

Krok 1) In Eclipse, skopiuj poniższy kod. Dodaj standardowe pliki biblioteki selenu 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 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) Uruchom kod. Zobaczysz, że żadna przeglądarka nie jest uruchomiona, a wyniki są wyświetlane w konsoli.

Kroki, aby użyć sterownika HTMLUnit Selenium

Korzyści ze sterownika jednostki HTML:

  • Ponieważ do testowania nie używa żadnego graficznego interfejsu użytkownika, testy będą przebiegać w tle bez żadnych przerw wizualnych
  • W porównaniu do wszystkich innych instancji wykonanie jest szybsze
  • Aby uruchomić testy za pomocą sterownika HtmlUnit, możesz także wybrać inne wersje przeglądarki
  • Jest niezależny od platformy i łatwiej jest przeprowadzić kilka testów jednocześnie. Idealne dla Testowanie obciążenia.

Ograniczenia:

  • Nie może emulować innych przeglądarek JavaZachowanie skryptu

PhantomJS

PhantomJS to bezgłowa przeglądarka z JavaAPI skryptu. Jest to optymalne rozwiązanie do testowania witryn Headless, dostępu i manipulowania stronami internetowymi, a także zawiera standardowe API DOM.

Aby używać PhantomJS z Seleniunem, należy użyć GhostDriver. GhostDriver to implementacja protokołu Webdriver Wire w prostym JS dla PhantomJS.

Najnowsza wersja PhatomJS ma zintegrowany GhostDriver i nie ma potrzeby osobnego instalowania go.

Oto jak działa system-

PhantomJS

Kroki do uruchomienia Selenium z PhatomJS

Krok 1) Musisz Eclipse w Selenium zainstalowany

Krok 2) Pobierz PhantomJS tutaj

Kroki do uruchomienia Selenium Z PhatomJS

Krok 3) Wyodrębnij pobrany folder do Program Files

Kroki do uruchomienia Selenium Z PhatomJS

Krok 4) Pobierz sterownik PhantomJS ze strony tutaj. Dodaj słoik do swojego projektu

Kroki do uruchomienia Selenium Z PhatomJS

Krok 5) Wklej poniższy kod w 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, że dane wyjściowe są wyświetlane w konsoli i nie jest uruchamiana żadna przeglądarka.

UWAGA: Przy pierwszym uruchomieniu, w zależności od ustawień, może pojawić się ostrzeżenie dotyczące bezpieczeństwa Windows aby umożliwić uruchomienie PhantomJS. Kliknij Zezwól na dostęp.

Kroki do uruchomienia Selenium Z PhatomJS

Wiele organizacji używa Phantom.JS do różnych celów, na przykład

  • Testowanie bez głowy
  • screen Capture
  • Automatyzacja strony
  • Monitorowanie sieci
  • Aby renderować zrzuty ekranu pulpitu nawigacyjnego dla swoich użytkowników
  • Aby uruchomić testy jednostkowe w wierszu poleceń
  • Aby wygenerować podręczniki dla pracowników z formatu HTML do formatu PDF
  • W połączeniu z QUnit dla zestawu testów

Podsumowanie

Aby szybko przetestować aplikację w różnych przeglądarkach i bez żadnych przerw wizualnych, przeglądarka bezgłowa Testowanie jest używany. Ze względu na swoją szybkość, dokładność i łatwy dostęp do funkcji, sterownik jednostki HTML i PhantomJS zyskują popularność w testowaniu automatyzacji przeglądarek bezgłowych. Postępując zgodnie z kilkoma prostymi krokami, dowiesz się, jak łatwo te narzędzia można zintegrować z innymi narzędziami i jak można wykonać kod testowy.