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) Запустіть код. Ви побачите, що браузер не запускається, а результати відображаються на консолі.
Переваги Html Unit Driver:
- Оскільки для тестування не використовується графічний інтерфейс, ваші тести виконуватимуться у фоновому режимі без будь-яких візуальних перерв
- Порівняно з усіма іншими екземплярами виконання відбувається швидше
- Щоб запустити тести через драйвер HtmlUnit, ви також можете вибрати інші версії браузера
-
Це не залежить від платформи, тому легше запускати кілька тестів одночасно. Ідеальний для Тестування навантаження.
Обмеження:
- Він не може емулювати інші браузери JavaПоведінка сценарію
PhantomJS
PhantomJS — безголовий браузер із JavaAPI скриптів. Це оптимальне рішення для автономного тестування веб-сайтів, доступу до веб-сторінок і керування ними, а також поставляється зі стандартним DOM API.
Щоб використовувати PhantomJS із Seleniun, потрібно використовувати GhostDriver. 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 для різних цілей, наприклад,
- Безголове тестування
- Screen Capture
- Автоматизація сторінок
- Моніторинг мережі
- Для візуалізації скріншотів інформаційної панелі для своїх користувачів
- Щоб запустити модульні тести в командному рядку
- Для створення довідників для працівників із HTML у PDF
- У поєднанні з QUnit для набору тестів
Підсумки
Щоб швидко перевірити програму в різних браузерах і без будь-яких візуальних перерв, безголовий браузер Тестування використовується. Завдяки своїй швидкості, точності та легкодоступним функціям драйвер модуля HTML і PhantomJS набувають популярності для автоматизованого тестування браузера без голови. Дотримуючись кількох простих кроків, ви дізнаєтесь, наскільки легко ці інструменти можна інтегрувати з іншими інструментами та як вони можуть виконувати тестовий код.