HTMLUnitDriver в Selenium

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

Що таке Headless Browser?

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

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

  • HtmlUnit
  • Привид
  • PhantomJS
  • ZombieJS
  • Watir- веб-драйвер

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

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

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

Selenium це потужний інструмент для тестування браузера без голови, що дозволяє розробникам запускати автоматизовані тести без видимого інтерфейсу користувача. Виконуючи тести у фоновому режимі, 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 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

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

  • Відсутність GUI
  • Труднощі в налагодженні
  • Обмежена підтримка браузера

HTMLUnitDriver

HTML UnitDriver є найлегшим і найшвидшим безголовим браузером для WebDriver. Він заснований на HtmlUnit. Він відомий як Безголовий драйвер браузера. Це те саме, що Chrome, IE або FireFox драйвер, але він не має графічного інтерфейсу користувача, тому виконання тесту неможливо побачити на екрані.

Особливості драйвера модуля HTML

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

Кроки для використання драйвера HTMLUnit Selenium

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

  • Оскільки для тестування не використовується графічний інтерфейс, ваші тести виконуватимуться у фоновому режимі без будь-яких візуальних перерв
  • Порівняно з усіма іншими екземплярами виконання відбувається швидше
  • Щоб запустити тести через драйвер HtmlUnit, ви також можете вибрати інші версії браузера
  • Це не залежить від платформи, тому легше запускати кілька тестів одночасно. Ідеальний для Тестування навантаження.

Обмеження:

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

PhantomJS

PhantomJS — безголовий браузер із JavaAPI скриптів. Це оптимальне рішення для автономного тестування веб-сайтів, доступу до веб-сторінок і керування ними, а також поставляється зі стандартним DOM API.

Щоб використовувати PhantomJS із Seleniun, потрібно використовувати GhostDriver. GhostDriver це реалізація протоколу Webdriver Wire у простому JS для PhantomJS.

Останній випуск PhatomJS має інтегрований GhostDriver і немає необхідності окремо встановлювати його.

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

PhantomJS

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

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

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

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

Крок 3) Розпакуйте завантажену папку в Program Files

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

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

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

Крок 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 З PhatomJS

Багато організацій використовують Phantom.JS для різних цілей, наприклад,

  • Безголове тестування
  • Screen Capture
  • Автоматизація сторінок
  • Моніторинг мережі
  • Для візуалізації скріншотів інформаційної панелі для своїх користувачів
  • Щоб запустити модульні тести в командному рядку
  • Для створення довідників для працівників із HTML у PDF
  • У поєднанні з QUnit для набору тестів

Підсумки

Щоб швидко перевірити програму в різних браузерах і без будь-яких візуальних перерв, безголовий браузер Тестування використовується. Завдяки своїй швидкості, точності та легкодоступним функціям драйвер модуля HTML і PhantomJS набувають популярності для автоматизованого тестування браузера без голови. Дотримуючись кількох простих кроків, ви дізнаєтесь, наскільки легко ці інструменти можна інтегрувати з іншими інструментами та як вони можуть виконувати тестовий код.