HTMLUnitDriver в Selenium: Учебное пособие по работе с безголовым браузером

⚡ Умное резюме

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

  • 🤖 Концепция безголового режима: Run Selenium Тестирование без видимого графического интерфейса позволяет экономить ресурсы процессора, память и время выполнения в рамках конвейеров CI.
  • ⚙️ Сила HtmlUnitDriver: чистый Java Движок, не требующий внешнего исполняемого файла, идеально подходит для быстрых проверок на уровне HTTP и оперативного взаимодействия с формами.
  • 🚀 Устаревшая функция PhantomJS: Разработка PhantomJS была прекращена в 2018 году; командам следует перейти на безголовый Chrome. Firefoxили драматург.
  • Современные альтернативы: Безголовый хром и Firefox предложить точный JavaРендеринг скриптов, протокол DevTools и улучшенная отладка.
  • 🧪 Лучшие варианты использования: Дымовые проверки, регрессионные тесты, нагрузочное тестирование и задачи непрерывной интеграции на безмониторных средах Linux.

HTMLUnitDriver в Selenium

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

Что такое Headless-браузер?

Безголовый браузер — это веб-браузер. без графического интерфейса пользователяЭта программа ведёт себя как обычный браузер, но во время выполнения не отображает никаких графических окон.

Примерами драйверов для браузеров без графического интерфейса являются:

  • ХтмлЮнит
  • призрак
  • PhantomJS (устарело)
  • ЗомбиJS
  • Watir-вебдрайвер
  • Безголовый хром
  • Безголовый Firefox

Когда использовать безголовое тестирование браузера?

В современную цифровую эпоху веб-приложения создаются с учетом совместимости с широким спектром устройств и платформ. Это создает проблему для разработчиков, которым необходимо обеспечить бесперебойную работу своих приложений в различных средах. Тестирование без графического интерфейса браузера (headless browser testing) является идеальным решением, поскольку позволяет разработчикам проверять свои веб-приложения без графического пользовательского интерфейса. Используя тестирование без графического интерфейса браузера, разработчики могут быстро тестировать сложные веб-приложения со множеством компонентов и зависимостей, что способствует ускорению разработки, уменьшению количества ошибок и повышению удовлетворенности пользователей.

Безголовое тестирование браузера с помощью Selenium

Selenium Это мощный инструмент для тестирования в безголовом режиме, позволяющий разработчикам запускать автоматизированные тесты без видимого пользовательского интерфейса. Запуская тесты в фоновом режиме, Selenium экономит время и ресурсы, а также помогаетping Выявление проблем, которые могут быть незаметны в традиционной среде тестирования на основе пользовательского интерфейса. Это включает в себя проблемы с производительностью и компоновкой, которые проявляются только в безголовой среде. Однако важно сбалансировать безголовое тестирование с традиционными тестами на основе пользовательского интерфейса, чтобы обеспечить полное покрытие.

Популярные примеры безголовых браузеров

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

PhantomJS

Уведомление об устаревании: Активная разработка PhantomJS прекратилась в 2018 году, и проект больше не поддерживается. Новым проектам следует отдавать предпочтение безголовому Chrome. 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.

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

  • Отсутствие видимого графического интерфейса для ручной проверки.
  • Отладка может быть сложнее без экрана.
  • Ограниченное покрытие поведения, специфичного для конкретного браузера.

HtmlUnitDriver

HtmlUnitDriver — это наиболее легковесная и быстрая реализация безголового браузера для Selenium WebDriver. Он основан на HtmlUnit и также известен как Безголовый драйвер браузераОн ведёт себя как Chrome, IE или Firefox Драйвер HtmlUnitDriver существует, но у него нет графического интерфейса, поэтому выполнение тестов не отображается на экране. HtmlUnitDriver по-прежнему поддерживается и распространяется через... org.seleniumhq.selenium:htmlunit3-driver Артефакт Maven.

Особенности HtmlUnitDriver:

  • Поддержка протоколов HTTPS и HTTP.
  • Поддержка HTML-ответов (переходы по ссылкам, отправка форм, обход DOM-модели HTML-документа и многое другое).
  • Поддержка файлов cookie
  • Поддержка прокси-сервера
  • Поддержка базовой и NTLM аутентификации
  • SOLID JavaСценарий поддержка
  • Поддержка методов отправки 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 устарел и больше не поддерживается. Для новых проектов в режиме без графического интерфейса используйте... Selenium с безголовым Chrome или Firefoxили перейти в раздел «Драматург». Раздел ниже предназначен только для ознакомления.

PhantomJS — это безголовый браузер с JavaScript API. Исторически он использовался для тестирования веб-сайтов в режиме headless, доступа к веб-страницам и их манипулирования, и поставляется вместе со стандартным DOM API.

Для использования PhantomJS с SeleniumВам потребуется GhostDriver. Призрачный Драйвер представляет собой реализацию протокола WebDriver Wire Protocol в обычном формате. 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. Firefoxили Playwright, которые получают постоянные обновления безопасности и рендеринга.

Часто задаваемые вопросы (FAQ)

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

Нет. Разработка PhantomJS была приостановлена ​​в 2018 году, и проект больше не поддерживается. Selenium Также из последних релизов был удален PhantomJSDriver. Новые тесты должны использовать безголовый Chrome. Firefoxили драматург.

HtmlUnitDriver — это чистый Java Движок очень быстрый и не требует исполняемых файлов браузера, но имеет ограничения. JavaТочность скрипта. Безголовый Chrome использует настоящий движок Blink, поэтому он отображает современный контент. JavaСайты, насыщенные скриптами, работают корректно, но за счет увеличения потребления ресурсов.

Используйте Selenium с безголовым Chrome или безголовым Firefox Для тестирования с высокой точностью в каждом браузере можно использовать Playwright, а для параллельной кроссбраузерной автоматизации — Playwright. Эти инструменты регулярно получают обновления безопасности и поддерживают современные функции, такие как протокол DevTools и перехват сетевых запросов.

Инструменты на основе ИИ могут автоматически исправлять ошибки в локаторах при изменении DOM, прогнозировать нестабильные тесты и анализировать скриншоты на предмет визуальных регрессий. Это уменьшает количество сбоев в работе в режиме без графического интерфейса в CI и помогает командам контроля качества поддерживать стабильную работу. Selenium конвейеры с минимальным ручным вмешательством.

Да. Современные ИИ-помощники могут генерировать Selenium Скрипты WebDriver в Java, Python или JavaСценарий, состоящий из простых пошаговых инструкций, включая варианты работы в безголовом режиме для Chrome или FirefoxПеред запуском в CI всегда проверяйте сгенерированный код на правильность ожиданий, селекторов и параметров безопасности.

Подведем итог этой публикации следующим образом: