HTMLUnitDriver в Selenium: Урок за браузър без глава

⚡ Умно обобщение

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

  • 🤖 Безглава концепция: бягане Selenium тестове без видим графичен потребителски интерфейс, за да се спести време за процесор, памет и изпълнение в CI конвейерите.
  • Сила на HtmlUnitDriver: Чист Java енджин, без външен двоичен файл, идеален за бързи проверки на HTTP ниво и бързи взаимодействия с формуляри.
  • ???? Отхвърляне на PhantomJS: Разработката на PhantomJS спря през 2018 г.; екипите трябва да мигрират към Chrome без графичен интерфейс, без графичен интерфейс Firefoxили драматург.
  • Съвременни алтернативи: Безглав Chrome и Firefox предлагат точна JavaРендиране на скриптове, протокол DevTools и по-добро дебъгване.
  • 🧪 Най-добри случаи на употреба: Проверки за дим, регресионни пакети, тестове за натоварване и задачи за непрекъсната интеграция на Linux сървъри без графичен интерфейс.

HTMLUnitDriver в Selenium

Безглавият браузър е уеб браузър без графичен потребителски интерфейс. Той може да работи във фонов режим без визуални ефекти.tracции. Той предлага ефикасен и ефективен начин за тестване на уеб приложения, като същевременно спестява време и ресурси. В тази статия ще разгледаме какво е headless браузър, кога да използваме headless тестване на браузъри и как да го извършим с помощта на Selenium HtmlUnitDriver и PhantomJS.

Какво е браузър без глава?

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

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

  • HtmlUnit
  • Призрак
  • PhantomJS (отхвърлен)
  • ZombieJS
  • Watir- уебдрайвер
  • Хром без глава
  • без глава Firefox

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

В днешната дигитална епоха уеб приложенията са създадени така, че да са съвместими с широк спектър от устройства и платформи. Това създава предизвикателство за разработчиците, които трябва да гарантират, че приложенията им работят безпроблемно в различни среди. Тестването на браузъри без графичен интерфейс е идеално решение, защото позволява на разработчиците да валидират своите уеб приложения без графичен потребителски интерфейс. Чрез използването на тестване на браузъри без графичен интерфейс, разработчиците могат бързо да обхванат сложни уеб приложения с много компоненти и зависимости, проправяйки пътя за по-бърза разработка, по-малко грешки и по-доволни потребители.

Тестване на браузър без глава с Selenium

Selenium е мощен инструмент за безглаво тестване на браузъри, който позволява на разработчиците да изпълняват автоматизирани тестове без видим потребителски интерфейс. Чрез изпълнение на тестове във фонов режим, Selenium спестява време и ресурси, като същевременно помагаping идентифицирайте проблеми, които може да не са очевидни в традиционна среда за тестване, базирана на потребителски интерфейс. Това включва проблеми с производителността и оформлението, които стават очевидни само в среда без графичен интерфейс. Важно е обаче да се балансира тестването без графичен интерфейс с традиционните тестове, базирани на потребителски интерфейс, за да се осигури пълно покритие.

Популярни примери за Headless браузъри

Предлагат се много браузъри без графичен интерфейс, всеки със свои собствени функции и предимства, което ги прави подходящи за различни случаи на употреба. Ще ги обсъдим по-долу.

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

Пример за Headless 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()

Предимства на Headless Browser Testing

  • По-бързо изпълнение на теста
  • Рентабилно тестване
  • По-добро покритие на тестовете
  • Гъвкавост при провеждане на тестове
  • По-лесна интеграция с CI/CD конвейери

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

  • Липса на видим графичен потребителски интерфейс за ръчна проверка
  • Отстраняването на грешки може да бъде по-трудно без екран
  • Ограничено покритие на поведението, специфично за браузъра

HtmlUnitDriver

HtmlUnitDriver е най-леката и бърза имплементация на браузър без графичен интерфейс. Selenium WebDriver. Той е базиран на HtmlUnit и е известен още като Headless драйвер за браузърДържи се като Chrome, IE или Firefox драйвер, но няма графичен потребителски интерфейс, така че изпълнението на теста не се вижда на екрана. HtmlUnitDriver все още се поддържа и се разпространява чрез org.seleniumhq.selenium:htmlunit3-driver Артефакт на Мейвън.

Характеристики на HtmlUnitDriver:

  • Поддръжка на HTTPS и HTTP протоколи
  • Поддръжка на HTML отговори (кликване върху връзки, изпращане на формуляри, разглеждане на DOM модела на HTML документа и други)
  • Поддръжка на бисквитки
  • Поддръжка на прокси сървър
  • Поддръжка за основно и NTLM удостоверяване
  • Солиден 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 е остарял и вече не се поддържа. За нова работа без headless, използвайте Selenium с Chrome без глава или Firefoxили преминете към „Драматург“. Разделът по-долу остава само за справка със стари версии.

PhantomJS е браузър без графичен интерфейс с JavaScript API. В миналото е бил използван за безконтактно тестване на уебсайтове, достъп и манипулиране на уеб страници и се доставя със стандартния DOM API.

За да използвате PhantomJS с Selenium, имате нужда от GhostDriver. GhostDriver е имплементация на протокола WebDriver Wire в обикновен вид 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 с headless Chrome, headless Firefoxили Playwriter, които получават текущи актуализации за сигурност и рендиране.

Въпроси и Отговори

Безглавият браузър е уеб браузър, който работи без графичен потребителски интерфейс. Selenium, драйвери без графичен интерфейс като HtmlUnitDriver, Chrome без графичен интерфейс и Firefox изпълнявайте тестове във фонов режим, което спестява ресурси и ускорява работата на автоматизираните пакети.

Не. Разработката на PhantomJS беше спряна през 2018 г. и проектът вече не се поддържа. Selenium също така премахна PhantomJSDriver от последните издания. Новите тестове трябва да използват Chrome без графичен интерфейс, без графичен интерфейс Firefoxили вместо това Драматург.

HtmlUnitDriver е чист Java двигател, много бърз и не се нуждае от двоичен файл на браузъра, но има ограничени JavaВерност на скриптовете. Безглавият Chrome използва истинския Blink енджин, така че рендира модерно. JavaСайтове, претоварени със скриптове, точно, за сметка на по-високо потребление на ресурси.

употреба Selenium с Chrome без глава или без глава Firefox за точно тестване в браузъра или използвайте Playwright за паралелна автоматизация между браузърите. Тези инструменти получават активни актуализации за сигурност и поддържат съвременни функции като DevTools Protocol и мрежово прихващане.

Инструментите, задвижвани от изкуствен интелект, могат автоматично да възстановяват локатори при промяна на DOM, да предвиждат нестабилни тестове и да анализират екранни снимки за визуални регресии. Това намалява прекъснатите headless изпълнения в CI и помага на QA екипите да поддържат стабилност. Selenium тръбопроводи с по-малко ръчна намеса.

Да. Съвременните асистенти с изкуствен интелект могат да генерират Selenium Скриптове на WebDriver в Java, Python или JavaСкрипт от стъпки на обикновен английски език, включително опции за безглава работа за Chrome или FirefoxВинаги проверявайте генерирания код за правилни чакания, селектори и сигурност, преди да го стартирате в CI.

Обобщете тази публикация с: