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

Безголовый браузер — это веб-браузер без графического пользовательского интерфейса. Он может работать в фоновом режиме без визуального отображения.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
- Поскольку в нем не используется графический интерфейс пользователя, тесты выполняются в фоновом режиме без визуального прерывания.
- По сравнению с другими экземплярами драйвера, выполнение происходит быстрее.
- Вы также можете эмулировать разные версии браузеров при запуске тестов с помощью HtmlUnitDriver.
-
Он является платформенно-независимым и позволяет легко запускать несколько тестов одновременно. Он идеально подходит для нагрузочное тестирование.
Ограничения:
- Оно не может полностью эмулировать JavaСкриптовое поведение каждого реального движка браузера.
PhantomJS
Напоминание: PhantomJS устарел и больше не поддерживается. Для новых проектов в режиме без графического интерфейса используйте... Selenium с безголовым Chrome или Firefoxили перейти в раздел «Драматург». Раздел ниже предназначен только для ознакомления.
PhantomJS — это безголовый браузер с JavaScript API. Исторически он использовался для тестирования веб-сайтов в режиме headless, доступа к веб-страницам и их манипулирования, и поставляется вместе со стандартным DOM API.
Для использования PhantomJS с SeleniumВам потребуется GhostDriver. Призрачный Драйвер представляет собой реализацию протокола WebDriver Wire Protocol в обычном формате. JavaСкрипт для PhantomJS.
Более поздние версии PhantomJS интегрированный GhostDriver, так что Нет необходимости устанавливать его отдельно.
Вот как работает система:
Шаги для бега Selenium с использованием PhantomJS
Шаг 1) Пример рассчета Eclipse с Selenium установлен.
Шаг 2) Скачать PhantomJS здесь.
Шаг 3) ExtracПереместите загруженную папку в папку Program Files.
Шаг 4) Загрузите драйвер PhantomJS с сайта здесьДобавьте JAR-файл в свой проект.
Шаг 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, нажмите здесь. разрешить доступ.
Многие организации исторически использовали PhantomJS для решения таких задач, как:
- Тестирование без монитора
- Скриншот
- Автоматизация страниц
- Мониторинг сети
- Создание скриншотов панели управления для пользователей.
- Запуск модульных тестов в командной строке
- Создание руководств для сотрудников из HTML в PDF.
- Использование QUnit для создания набора тестов.
Для новых задач замените эти примеры использования PhantomJS на безголовый Chrome. Firefoxили Playwright, которые получают постоянные обновления безопасности и рендеринга.






