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.
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-
Kroki do uruchomienia Selenium z PhatomJS
Krok 1) Musisz Eclipse w Selenium zainstalowany
Krok 2) Pobierz PhantomJS tutaj
Krok 3) Wyodrębnij pobrany folder do Program Files
Krok 4) Pobierz sterownik PhantomJS ze strony tutaj. Dodaj słoik do swojego projektu
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.
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.