HTMLUnitDriver в Selenium: Підручник з безголового браузера

⚡ Розумний підсумок

HtmlUnitDriver — це найшвидша безголова реалізація Selenium WebDriver, тоді як PhantomJS, колись популярний браузер на основі GhostDriver без headless-коду, застарів з 2018 року та тепер замінений на Chrome без headless-коду, Firefox, а також Playwright для сучасних автоматизованих робочих процесів.

  • 🤖 Концепція без голови: прогін Selenium тести без видимого графічного інтерфейсу для економії процесора, пам'яті та часу виконання в конвеєрах неперервної інтеграції.
  • Сила HtmlUnitDriver: Чистий Java рушій, без зовнішнього бінарного файлу, ідеально підходить для швидких перевірок на рівні HTTP та швидкої взаємодії з формами.
  • ???? Застарівання PhantomJS: Розробка PhantomJS зупинена у 2018 році; командам слід перейти на Chrome без headless Firefox, або Драматург.
  • Сучасні альтернативи: Безголовий Chrome та Firefox пропонувати точну JavaРендеринг скриптів, протокол DevTools та покращене налагодження.
  • 🧪 Найкращі випадки використання: Димові перевірки, регресійні набори, навантажувальне тестування та завдання безперервної інтеграції на безголових Linux-запускниках.

HTMLUnitDriver в Selenium

Безголовий браузер — це веббраузер без графічного інтерфейсу користувача. Він може працювати у фоновому режимі без візуального стримування.tracцій. Він пропонує ефективний та результативний спосіб тестування веб-застосунків, заощаджуючи час та ресурси. У цій статті ми досліджуємо, що таке безголовий браузер, коли використовувати безголове тестування браузера та як його виконувати за допомогою Selenium HtmlUnitDriver та PhantomJS.

Що таке браузер без головки?

Безголовий браузер — це веббраузер без графічного інтерфейсуЦя програма поводиться так само, як звичайний браузер, але під час виконання не відображає жодного вікна графічного інтерфейсу.

Деякі приклади драйверів безголового браузера включають:

  • HtmlUnit
  • Привид
  • PhantomJS (застарілий)
  • ZombieJS
  • Watir- веб-драйвер
  • Хром без голови
  • Безголовий Firefox

Коли використовувати безголове тестування браузера?

У сучасну цифрову епоху веб-додатки створюються для сумісності з широким спектром пристроїв та платформ. Це створює виклик для розробників, які повинні забезпечити безперебійну роботу своїх додатків у різних середовищах. Тестування браузера без графічного інтерфейсу користувача є ідеальним рішенням, оскільки воно дозволяє розробникам перевіряти свої веб-додатки без графічного інтерфейсу користувача. Використовуючи тестування браузера без графічного інтерфейсу, розробники можуть швидко охоплювати складні веб-додатки з багатьма компонентами та залежностями, що прокладає шлях для швидшої розробки, меншої кількості помилок та задоволеності користувачів.

Безголове тестування браузера за допомогою Selenium

Selenium — це потужний інструмент для безголового тестування браузерів, що дозволяє розробникам запускати автоматизовані тести без видимого інтерфейсу користувача. Запускаючи тести у фоновому режимі, Selenium заощаджує час і ресурси, а також допомагаєping виявити проблеми, які можуть бути неочевидними в традиційному середовищі тестування на основі інтерфейсу користувача. Це включає проблеми з продуктивністю та макетом, які стають очевидними лише в середовищі без попереднього перегляду. Однак важливо збалансувати без попереднього перегляду з традиційними тестами на основі інтерфейсу користувача, щоб забезпечити повне охоплення.

Популярні приклади безголових браузерів

Існує багато браузерів без графічного інтерфейсу, кожен з яких має свої функції та переваги, що робить їх придатними для різних випадків використання. Ми обговоримо їх нижче.

PhantomJS

Повідомлення про припинення підтримки: Активна розробка PhantomJS припинилася у 2018 році, і проєкт більше не підтримується. Новим проєктам слід надавати перевагу headless-версії Chrome, headless-версії. Firefoxабо Драматург для сучасної безголової автоматизації. Приклад PhantomJS нижче наведено лише для довідки.

PhantomJS — це браузер без графічного інтерфейсу, який використовує WebKit як механізм рендерингу та підтримує веб-стандарти, такі як HTML5, CSS3 та… JavaСкрипт. Його можна використовувати для захоплення екрана та автоматизації сторінок. Він має відкритий вихідний код та сумісний з кількома операційними системами.

Приклад Selenium із 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()

Chrome

Chrome — найпопулярніший браузер на планеті, який також пропонує режим безінтерфейсу. Його можна використовувати на багатьох платформах, і він підтримує популярні мови програмування та фреймворки. Його вбудовані інструменти налагодження та обширна документація спрощують використання та усунення будь-яких проблем, які можуть виникнути під час тестування.

Приклад Headless Chrome з 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 – це популярний веббраузер, який також можна використовувати як браузер без графічного інтерфейсу для тестування. Одна з переваг використання Firefox як браузер без графічного інтерфейсу, його легкість робить його універсальним варіантом для тестування на різних операційних системах. У поєднанні з його обширною документацією та підтримкою спільноти, Firefox є чудовим вибором для команд, які експериментують з автоматизацією браузера без використання графічного інтерфейсу.

Приклад безголового Firefox з 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()

Переваги безголового тестування браузера

  • Швидше виконання тесту
  • Економічне тестування
  • Краще охоплення тестами
  • Гнучкість у проведенні тестів
  • Простіша інтеграція з конвеєрами CI/CD

Недоліки безголового тестування браузера

  • Відсутність видимого графічного інтерфейсу для ручної перевірки
  • Налагодження може бути складнішим без екрана
  • Обмежене покриття поведінки, специфічної для браузера

Драйвер HtmlUnit

HtmlUnitDriver — це найлегша та найшвидша реалізація браузера без headless. Selenium WebDriver. Він базується на HtmlUnit і також відомий як Безголовий драйвер браузераВін поводиться як Chrome, IE або Firefox драйвер, але він не має графічного інтерфейсу, тому виконання тесту не відображається на екрані. HtmlUnitDriver все ще підтримується та розповсюджується через org.seleniumhq.selenium:htmlunit3-driver Артефакт Мейвена.

Можливості HtmlUnitDriver:

  • Підтримка протоколів HTTPS і HTTP
  • Підтримка HTML-відповідей (клацання посилань, надсилання форм, перехід по DOM-моделі HTML-документа тощо)
  • Підтримка файлів cookie
  • Підтримка проксі-сервера
  • Підтримка базової та NTLM аутентифікації
  • Solid JavaScript підтримкою
  • Підтримка методів надсилання GET та POST
  • Можливість налаштувати заголовки запитів, що надсилаються на сервер
  • Можливість контролювати, чи повинні невдалі відповіді від сервера викидати винятки, чи повертатися як сторінки відповідного типу

Кроки для використання HtmlUnitDriver з Selenium

Крок 1) In Eclipse, скопіюйте наступний код. Додайте стандарт Selenium файли бібліотеки до проекту. Додаткові 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();			
         }		
}

Крок 2) Запустіть код. Ви побачите, що жоден браузер не запускається, а результати відображаються в консолі.

Кроки для використання HtmlUnitDriver з Selenium

Переваги HtmlUnitDriver

  • Оскільки не використовується графічний інтерфейс, тести виконуються у фоновому режимі без візуальних перешкод.
  • Порівняно з іншими екземплярами драйверів, виконання відбувається швидше
  • Ви також можете емулювати різні версії браузерів під час запуску тестів через HtmlUnitDriver
  • Він не залежить від платформи та дозволяє легко проводити кілька тестів одночасно. Він ідеально підходить для тестування навантаження.

Обмеження:

  • Він не може повністю імітувати JavaПоведінка скриптів кожного реального браузерного движка

PhantomJS

Нагадування: PhantomJS застарів і більше не підтримується. Для нової роботи без headless-розробки використовуйте Selenium з безголовим Chrome або Firefoxабо перейдіть до розділу «Драматург». Розділ нижче залишається лише для довідки зі старих версій.

PhantomJS — це браузер без headless-розробки з JavaAPI скриптів. Історично він використовувався для тестування веб-сайтів без обробки даних, доступу та маніпулювання веб-сторінками та постачається зі стандартним DOM API.

Щоб використовувати PhantomJS з Selenium, вам потрібен GhostDriver. GhostDriver є реалізацією протоколу WebDriver Wire у простому вигляді JavaСкрипт для PhantomJS.

Пізніші випуски PhantomJS інтегрований GhostDriver, отже немає потреби встановлювати його окремо.

Ось як працює система:

PhantomJS

Кроки для бігу Selenium з PhantomJS

Крок 1) Тобі потрібно Eclipse з Selenium встановлений.

Крок 2) Завантажити PhantomJS тут.

Кроки до бігу Selenium З PhantomJS

Крок 3) ExtracЗмістіть завантажену папку в Program Files.

Кроки до бігу Selenium З PhantomJS

Крок 4) Завантажте драйвер PhantomJS з тутДодайте JAR-файл до свого проєкту.

Кроки до бігу Selenium З PhantomJS

Крок 5) Вставте наступний код у 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();			
           }		
}

Крок 6) Запустіть код. Ви побачите результат у консолі, і браузер не запуститься.

ПРИМІТКА: Під час першого запуску, залежно від ваших налаштувань, ви можете побачити попередження безпеки від Windows щоб дозволити роботу PhantomJS. Натисніть Дозволити доступ.

Кроки до бігу Selenium З PhantomJS

Багато організацій історично використовували PhantomJS для таких завдань, як:

  • Безголове тестування
  • Скріншот
  • Автоматизація сторінок
  • Моніторинг мережі
  • Рендеринг скріншотів панелі інструментів для своїх користувачів
  • Запуск модульних тестів у командному рядку
  • Створення довідників для співробітників з HTML у PDF
  • Поєднання з QUnit для набору тестів

Для нової роботи замініть ці варіанти використання PhantomJS на Chrome без headless, headless Firefox, або Playwriter, які отримують постійні оновлення безпеки та рендерингу.

Поширені запитання

Безголовий браузер — це веббраузер, який працює без графічного інтерфейсу користувача. Selenium, драйвери без headless, такі як HtmlUnitDriver, Chrome без headless та Firefox виконувати тести у фоновому режимі, що економить ресурси та пришвидшує роботу автоматизованих пакетів.

Ні. Розробку PhantomJS було призупинено у 2018 році, і проєкт більше не підтримується. Selenium також видалив PhantomJSDriver з останніх релізів. Нові тести повинні використовувати Chrome без headless, Firefoxабо ж «Драматург».

HtmlUnitDriver – це чистий Java двигун, дуже швидкий і не потребує бінарного файлу браузера, але має обмежені JavaТочність скриптів. Безголовий Chrome використовує справжній движок Blink, тому він рендерить сучасно. JavaСайти з великою кількістю скриптів точно, але ціною більшого використання ресурсів.

Скористайтеся кнопкою Selenium з безголовним Chrome або безголовним Firefox для точного тестування в браузері або використовувати Playwright для паралельної кросбраузерної автоматизації. Ці інструменти отримують активні оновлення безпеки та підтримують сучасні функції, такі як протокол DevTools та мережеве перехоплення.

Інструменти на базі штучного інтелекту можуть автоматично відновлювати локатори при зміні DOM, прогнозувати нестабільні тести та аналізувати скріншоти на наявність візуальних регресій. Це зменшує кількість несправних безголових прогонів у неперервній інтеграції та допомагає командам контролю якості підтримувати стабільність. Selenium трубопроводи з меншим ручним втручанням.

Так. Сучасні помічники зі штучним інтелектом можуть генерувати Selenium Скрипти WebDriver у Java, Pythonабо JavaСкрипт з кроків простою англійською мовою, включаючи опції headless для Chrome або FirefoxЗавжди перевіряйте згенерований код на правильність очікування, селекторів та безпеки, перш ніж запускати його в CI.

Підсумуйте цей пост за допомогою: