Безголовый браузер Selenium (HTMLUnitDriver)

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

Что такое безголовый браузер?

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

Некоторые из примеров безголовых водителей включают в себя

  • ХтмлЮнит
  • призрак
  • PhantomJS
  • ЗомбиJS
  • Watir-webdriver

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

В современную цифровую эпоху веб-приложения разрабатываются так, чтобы быть совместимыми с широким спектром устройств и платформ. Это часто представляет собой проблему для разработчиков веб-сайтов, которым необходимо обеспечить бесперебойную работу своих приложений на этих платформах. Безвизовое тестирование браузера — идеальное решение этой проблемы, поскольку оно позволяет разработчикам тестировать свои веб-приложения без необходимости использования графического пользовательского интерфейса. Используя headless-тестирование браузера, разработчики могут легко тестировать com.plex веб-приложения с множеством компонентов и зависимостей, открывающие путь к более быстрой разработке, безошибочному коду и счастливым пользователям.

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

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

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

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

PhantomJS

PhantomJS — это автономный браузер, который использует WebKit в качестве механизма рендеринга и поддерживает различные веб-стандарты, такие как HTML5, CSS3 и JavaScript. Его можно использовать для захвата экрана и задач автоматизации страниц. Он имеет открытый исходный код и совместим с несколькими операционными системами.

Пример 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 на 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 с селеном в 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 или FireFox драйвер, но у него нет графического интерфейса, поэтому выполнение теста невозможно увидеть на экране.

Возможности драйвера модуля HTML

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

Действия по использованию драйвера HTMLUnit с Selenium

Шаг 1) In Eclipse, скопируйте следующееwing код. Добавьте в проект стандартные файлы библиотеки 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) Запустите код. Вы увидите, что браузер не запущен, а результаты отображаются в консоли.

Действия по использованию драйвера HTMLUnit с Selenium

Преимущества HTML-драйвера:

  • Поскольку для тестирования не используется графический интерфейс, ваши тесты будут выполняться в фоновом режиме без каких-либо визуальных прерываний.
  • По сравнению со всеми другими экземплярами выполнение происходит быстрее
  • Чтобы запустить тесты через драйвер HtmlUnit, вы также можете выбрать другие версии браузера.
  • Он не зависит от платформы, и его проще запускать несколько тестов одновременно. Идеально для испытание нагрузкой.

Ограничения:

  • Он не может эмулировать поведение JavaScript других браузеров.

PhantomJS

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

Чтобы использовать PhantomJS с Seleniun, необходимо использовать GhostDriver. Призрачный Драйвер — это реализация протокола Webdriver Wire на простом JS для PhantomJS.

Последний выпуск Ph.atomJS имеет интегрированный GhostDriver и отдельно устанавливать его не нужно.

Вот как работает система-

PhantomJS

Шаги по запуску Selenium с PhatomJS

Шаг 1) Вам нужно Eclipse с установленным Selenium

Шаг 2) Скачать PhantomJS здесь

Шаги по запуску Selenium с PhatomJS

Шаг 3) Извлеките загруженную папку в Program Files.

Шаги по запуску Selenium с PhatomJS

Шаг 4) Загрузите драйвер PhantomJS с сайта здесь. Добавьте банку в свой проект

Шаги по запуску Selenium с PhatomJS

Шаг 5) Вставьте следующееwing код в 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 с PhatomJS

Многие организации используют Phantom.JS для различных целей, например:

  • Безголовое тестирование
  • Захват экрана
  • Автоматизация страницы
  • Мониторинг сети
  • Чтобы отображать скриншоты панели мониторинга для своих пользователей
  • Запуск модульных тестов в командной строке
  • Для создания справочников сотрудников из HTML в PDF
  • В сочетании с QUnit для набора тестов

Итоги

Чтобы быстро протестировать приложение в различных браузерах и без каких-либо визуальных помех, используйте headless-браузер. Тестирование используется. Благодаря своей скорости, точности и простоте доступа к функциям модульный драйвер HTML и PhantomJS набирают популярность для автономного тестирования браузеров. Следуяwing выполнив несколько простых шагов, вы узнаете, насколько легко эти инструменты можно интегрировать с другими инструментами и выполнять тестовый код.