Безголовый браузер Selenium (HTMLUnitDriver)
Безголовый браузер — это веб-браузер без графического пользовательского интерфейса. Он может работать в фоновом режиме без визуальных отвлекающих факторов. Он предлагает эффективный и действенный способ тестирования веб-приложений, экономя при этом время и ресурсы. В этом уроке мы углубимся в то, что такое безголовый браузер, когда использовать тестирование безголового браузера и как его выполнить с помощью Selenium.
Что такое безголовый браузер?
Безголовый браузер — это веб-браузер. без графического интерфейса пользователя. Эта программа будет вести себя так же, как браузер, но не будет отображать графический интерфейс.
Некоторые из примеров безголовых водителей включают в себя
- ХтмлЮнит
- призрак
- PhantomJS
- ЗомбиJS
- Watir-вебдрайвер
Когда использовать безголовое тестирование браузера?
В современную цифровую эпоху веб-приложения разрабатываются так, чтобы быть совместимыми с широким спектром устройств и платформ. Это часто представляет собой проблему для разработчиков веб-сайтов, которым необходимо обеспечить бесперебойную работу своих приложений на этих платформах. Безвизовое тестирование браузера — идеальное решение этой проблемы, поскольку оно позволяет разработчикам тестировать свои веб-приложения без необходимости использования графического пользовательского интерфейса. Используя автономное тестирование браузера, разработчики могут легко тестировать сложные веб-приложения с множеством компонентов и зависимостей, открывая путь к более быстрой разработке, безошибочному коду и счастливым пользователям.
Безголовое тестирование браузера с помощью Selenium
Selenium мощный инструмент для headless браузерного тестирования, позволяющий разработчикам запускать автоматизированные тесты без необходимости в видимом пользовательском интерфейсе. Запуская тесты в фоновом режиме, Selenium может сэкономить время и ресурсы, а также помочь выявить проблемы, которые могут быть неочевидны в традиционной среде тестирования на основе пользовательского интерфейса. Сюда входят проблемы, связанные с производительностью и компоновкой, которые могут проявиться только в безголовом режиме. Однако важно помнить об ограничениях автономного тестирования и сбалансировать его с традиционными методами на основе пользовательского интерфейса, чтобы обеспечить всесторонний охват тестирования.
Популярные примеры безголовых браузеров
Доступно множество безголовых браузеров, каждый из которых обладает своими уникальными функциями и преимуществами, что делает их подходящими для разных случаев использования. Мы обсуждаем их ниже: -
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. Он может использоваться на нескольких платформах и поддерживает языки программирования и платформы. Встроенные инструменты отладки и обширная документация упрощают использование и устранение любых проблем, которые могут возникнуть во время тестирования.
Пример 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
HTML UnitDriver — это самый легкий и самый быстрый браузер без монитора для WebDriver. Он основан на HtmlUnit. Он известен как Безголовый драйвер браузера. Это то же самое, что Chrome, IE или Fire.Fox драйвер, но у него нет графического интерфейса, поэтому выполнение теста невозможно увидеть на экране.
Возможности драйвера модуля HTML
- Поддержка протоколов HTTPS и HTTP.
- Поддержка ответов HTML (нажатие на ссылки, отправка форм, просмотр модели DOM HTML-документа и т. д.)
- Поддержка файлов cookie
- Поддержка прокси-сервера
- Поддержка базовой и NTLM аутентификации
- Прекрасно JavaСценарий поддержка
- Поддержка методов отправки GET и POST.
- Возможность настройки заголовков запросов, отправляемых на сервер.
- Возможность определить, должны ли ошибочные ответы сервера вызывать исключения или должны быть возвращены в виде страниц соответствующего типа.
Действия по использованию драйвера HTMLUnit с 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 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(); } }
Шаг 2) Запустите код. Вы увидите, что браузер не запущен, а результаты отображаются в консоли.
Преимущества HTML-драйвера:
- Поскольку для тестирования не используется графический интерфейс, ваши тесты будут выполняться в фоновом режиме без каких-либо визуальных прерываний.
- По сравнению со всеми другими экземплярами выполнение происходит быстрее
- Чтобы запустить тесты через драйвер HtmlUnit, вы также можете выбрать другие версии браузера.
-
Он не зависит от платформы, и его проще запускать несколько тестов одновременно. Идеально для испытание нагрузкой.
Ограничения:
- Он не может эмулировать другие браузеры JavaСценарий поведения
PhantomJS
PhantomJS — это безголовый браузер с JavaScript API. Это оптимальное решение для Headless-тестирования веб-сайтов, доступа и управления веб-страницами, а также поставляется со стандартным DOM API.
Чтобы использовать PhantomJS с Seleniun, необходимо использовать GhostDriver. Призрачный Драйвер — это реализация протокола Webdriver Wire на простом JS для PhantomJS.
Последняя версия PhatomJS имеет интегрированный GhostDriver и отдельно устанавливать его не нужно.
Вот как работает система-
Шаги для запуска Selenium с PhatomJS
Шаг 1) Пример рассчета Eclipse Selenium установлен
Шаг 2) Скачать PhantomJS здесь
Шаг 3) Извлеките загруженную папку в Program Files.
Шаг 4) Загрузите драйвер 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. Нажмите «Разрешить доступ».
Многие организации используют Phantom.JS для различных целей, например:
- Безголовое тестирование
- Захват экрана
- Автоматизация страницы
- Мониторинг сети
- Чтобы отображать скриншоты панели мониторинга для своих пользователей
- Запуск модульных тестов в командной строке
- Для создания справочников сотрудников из HTML в PDF
- В сочетании с QUnit для набора тестов
Итого
Чтобы быстро протестировать приложение в различных браузерах и без каких-либо визуальных помех, используйте headless-браузер. Тестирование используется. Благодаря своей скорости, точности и простоте доступа к функциям модульный драйвер HTML и PhantomJS набирают популярность для автономного тестирования браузеров. Выполнив несколько простых шагов, вы узнаете, насколько легко эти инструменты можно интегрировать с другими инструментами и выполнять тестовый код.