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

Безглавият браузър е уеб браузър без графичен потребителски интерфейс. Той може да работи във фонов режим без визуални ефекти.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
- Тъй като не използва графичен потребителски интерфейс, тестовете се изпълняват във фонов режим без визуално прекъсване.
- В сравнение с други екземпляри на драйвери, изпълнението е по-бързо
- Можете също така да емулирате различни версии на браузъра, когато изпълнявате тестове чрез HtmlUnitDriver.
-
Той е платформено независим и лесен за едновременно изпълнение на няколко теста. Идеален е за тестване на товара.
Ограничения:
- Не може напълно да емулира JavaПоведение на скриптовете на всеки истински браузърен енджин
PhantomJS
Напомняне: PhantomJS е остарял и вече не се поддържа. За нова работа без headless, използвайте Selenium с Chrome без глава или Firefoxили преминете към „Драматург“. Разделът по-долу остава само за справка със стари версии.
PhantomJS е браузър без графичен интерфейс с JavaScript API. В миналото е бил използван за безконтактно тестване на уебсайтове, достъп и манипулиране на уеб страници и се доставя със стандартния DOM API.
За да използвате PhantomJS с Selenium, имате нужда от GhostDriver. GhostDriver е имплементация на протокола WebDriver Wire в обикновен вид 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 с headless Chrome, headless Firefoxили Playwriter, които получават текущи актуализации за сигурност и рендиране.






