Selenium Підручник з сітки: налаштування концентратора та вузла (приклад)
Що таке Selenium Сітка?
Selenium сітка є частиною Selenium Набір, який спеціалізується на одночасному виконанні кількох тестів у різних браузерах, операційних системах і машинах. Це досягається шляхом маршрутизації команд віддалених екземплярів браузера, де сервер діє як концентратор. Для виконання тестів користувачеві необхідно налаштувати віддалений сервер.
Selenium Grid має 2 версії – старішу Grid 1 і новішу Grid 2. Ми зосередимося лише на Grid 2, оскільки Grid 1 поступово застарів Selenium Команда.
Selenium сітка Archiтектура
Selenium Сітка має концентратор і вузол Archiтектура.
Концентратор
- Хаб — це центральна точка, куди ви завантажуєте свої тести.
- У сітці має бути лише один хаб.
- Хаб запускається тільки на одній машині, скажімо, на комп'ютері з ОС Windows 7 і браузером якого є IE.
- На машині, що містить хаб, виконуватимуться тести, але ви побачите, що браузер на вузлі автоматизований.
Nodes
- Вузли є Selenium екземпляри, які виконуватимуть тести, які ви завантажили в концентратор.
- У сітці може бути один або декілька вузлів.
- Вузли можна запускати на кількох машинах з різними платформами та браузерами.
- Машини, на яких працюють вузли, не обов’язково мають бути на одній платформі з хабом.
Selenium Grid використовує концепцію хаб-вузол, де ви запускаєте тест лише на одній машині під назвою a концентратор, але виконання виконуватиметься різними машинами, які називаються вузли.
Як налаштувати Selenium Сітка?
У цьому розділі ви будете використовувати 2 машини. Перша машина буде системою, яка керуватиме хабом, тоді як інша машина працюватиме вузлом. Для простоти давайте назвемо машину, на якій працює концентратор, «машиною A», а машину, на якій працює вузол, — «машиною B». Також важливо зазначити їхні IP-адреси. Скажімо, IP-адреса машини A 192.168.1.3, а IP-адреса машини B 192.168.1.4.
Крок 1) Завантажити Selenium Сервер від тут.
Крок 2) Ви можете розмістити Selenium Файл .jar сервера будь-де на вашому жорсткому диску. Але для цілей цього підручника розмістіть його на диску C комп’ютера A та B. Після цього ви завершили встановлення Selenium Сітка. Наступні кроки запустять концентратор і вузол.
Крок 3)
- Зараз ми будемо запускати хаб. Перейдіть до комп’ютера А. За допомогою командного рядка перейдіть до кореня диска комп’ютера А – С, тому що це каталог, де ми розмістили Selenium Сервер.
- У командному рядку введіть java -jar selenium-server-standalone-2.30.0.jar -role hub
- Хаб повинен бути успішно запущений. Ваш командний рядок має виглядати подібно до зображення нижче.
Крок 4) Ще один спосіб перевірити, чи запущений хаб, — за допомогою браузера. Selenium Grid за замовчуванням використовує порт 4444 машини A для свого веб-інтерфейсу. Просто відкрийте браузер і перейдіть до http://localhost:4444/grid/console
Крім того, ви можете перевірити, чи може машина B отримати доступ до веб-інтерфейсу концентратора, запустивши там браузер і перейшовши до «iporhostnameofmachineA» має бути IP-адресою або ім’ям хоста машини, на якій запущено концентратор. Оскільки IP-адреса комп’ютера A – 192.168.1.3, то в браузері на комп’ютері B вам слід ввести http://192.168.1.3:4444/grid/console
Крок 5)
- Тепер, коли хаб уже налаштовано, ми збираємося запустити вузол. Перейдіть до машини B і запустіть там командний рядок.
- Перейдіть до кореня диска C і введіть наведений нижче код. Ми використали IP-адресу 192.168.1.3, оскільки саме там працює концентратор. Ми також використовували порт 5566, хоча ви можете вибрати будь-який вільний номер порту.
- ПРИМІТКА: тепер вам потрібно вказати шлях до драйвера Gecko, якщо він використовується Firefox. Ось оновлений код, який потрібно використати
java -Dwebdriver.gecko.driver="C:\geckodriver.exe" -jar selenium-server-standalone-3.4.0.jar -role webdriver -hub http://192.168.1.3:4444/grid/register -port 5566
- Коли ви натискаєте Enter, ваш командний рядок має бути схожим на зображення нижче.
Крок 6) Перейти до Selenium Веб-інтерфейс Grid і оновіть сторінку. Ви повинні побачити щось подібне.
На цьому етапі ви вже налаштували просту сітку. Тепер ви готові запустити тест віддалено на машині B.
Коли використовувати Selenium Сітка?
Ви повинні використовувати Selenium Сітка, коли ви хочете зробити одне або обидва з наступного:
- Виконуйте свої тести на різних браузерах, операційних системах і машинах одночасно. Це гарантує, що додаток ви Тестування повністю сумісний із широким діапазоном комбінацій браузер-ОС.
- Економте час під час виконання ваших тестів. Якщо ви налаштували Selenium Сітка для запуску, скажімо, 4 тестів за раз, тоді ви зможете завершити весь пакет приблизно в 4 рази швидше.
Grid 1.0 проти Grid 2.0
Нижче наведено основні відмінності між Selenium Сітка 1 і 2.
Сітка 1 | Сітка 2 |
---|---|
Selenium Grid 1 має власний пульт дистанційного керування, який відрізняється від Selenium RC сервер. Це дві різні програми. | Selenium Grid 2 тепер у комплекті з Selenium Файл jar сервера |
Потрібно встановити та налаштувати Apache Ant спочатку, перш ніж ви зможете використовувати Grid 1. | Вам не потрібно встановлювати Apache Ant у Grid 2. |
Може тільки підтримати Selenium RC команди/скрипти. | Може підтримувати обидва Selenium Скрипти RC і WebDriver. |
Ви можете автоматизувати лише один браузер на один пульт дистанційного керування. | Один пульт дистанційного керування може автоматизувати до 5 браузерів. |
Selenium сітку можна налаштувати двома різними способами; один через командний рядок, а інший через файл конфігурації JSON.
Розробка тестових сценаріїв, які можуть працювати в сітці
Щоб розробити тестові сценарії, які працюватимуть у сітці, нам потрібно використовувати Бажані можливості і RemoteWebDriver об’єкти.
- Бажані можливості використовується для встановлення типу браузер та OS що ми автоматизуємо.
- RemoteWebDriver використовується для встановлення того, на якому вузлі (або машині) виконуватиметься наш тест.
Для використання Бажані можливості об'єкт, ви повинні спочатку імпортувати цей пакет
Для використання RemoteWebDriver об’єкт, ви повинні імпортувати ці пакети.
Використання об’єкта DesiredCapabilites
Перейдіть до веб-інтерфейсу Grid і наведіть курсор на зображення браузера, який потрібно автоматизувати. Візьміть до відома платформа, і ім'я браузера показано спливаючою підказкою.
У цьому випадку платформа – «XP», а назва браузера – «Firefox».
Ми будемо використовувати платформу та назву браузера в нашому веб-драйвері, як показано нижче (звичайно, спочатку потрібно імпортувати необхідні пакети).
Використання об’єкта RemoteWebDriver
Імпортуйте необхідні пакети для RemoteWebDriver, а потім передайте створений вище об’єкт DesiredCapabilities як параметр для об’єкта RemoteWebDriver.
Виконання зразка тестового випадку на сітці
Нижче наведено простий WebDriver Testng код, у якому можна створити Eclipse на машині A. Після запуску автоматизація буде виконана на машині B.
import org.openqa.selenium.*; import org.openqa.selenium.remote.DesiredCapabilities; import java.net.MalformedURLException; import java.net.URL; import org.openqa.selenium.remote.RemoteWebDriver; import org.testng.Assert; import org.testng.annotations.*; public class Grid_2 { WebDriver driver; String baseUrl, nodeURL; @BeforeTest public void setUpWthrows MalformedURLException { baseUrl = "http://newtours.demoaut.com/"; nodeURL = "http://192.168.1.4:5566/wd/hub"; DesiredCapabilities capability = DesiredCapabilities.firefox(); capability. setBrowserName("firefox"); capability. setPlatform(Platform.XP); driver = new RemoteWebDriver(new URL(nodeURL), capability); } @AfterTest public void afterTest() { driver.quit(); } @Test public void simpleTest() { driver.get(baseUr1); Assert.assertEquas("Welcome: Mercury Tours", driver.getTitle()); } }
Тест має пройти.
Selenium конфігурація сітки за допомогою файлу JSON
JSON означає Javascript Нотація об’єктів. Це стандартний формат, який використовується для обміну даними між браузером і веб-сервером. Selenium має вбудований конфігураційний файл JSON, який можна використовувати для налаштування сітки селену.
Нижче наведено кроки для налаштування сітки селену за допомогою файлу конфігурації JSON.
Крок 1) Завантажте код для файлу конфігурації JSON, використовуючи шлях нижче
Ось код
{ "port": 4444, "newSessionWaitTimeout": -1, "servlets" : [], "withoutServlets": [], "custom": {}, "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher", "registryClass": "org.openqa.grid.internal.DefaultGridRegistry", "throwOnCapabilityNotPresent": true, "cleanUpCycle": 5000, "role": "hub", "debug": false, "browserTimeout": 0, "timeout": 1800 }
Крок 2) Скопіюйте та вставте код у текстовий редактор, наприклад Блокнот із розширенням ".json"
Крок 3)Запустіть хаб за допомогою наведеної нижче команди за допомогою командного рядка
java -jar selenium-server-standalone-2.53.1.jar -role hub -hubConfig hubconfig.json
ПРИМІТКА: Selenium автономний файл jar і файл json повинні бути присутніми в одному каталозі
Крок 4) З’явиться наведений нижче екран, який вказує на успішне налаштування концентратора
Крок 5) Відкрийте веб-переглядач і спробуйте підключитися до наведеної нижче URL-адреси
http://192.168.43.223:4444/grid/console
ПРИМІТКА: URL-адреса може відрізнятися від машини до машини. Потрібно використовувати URL-адресу, за якою слід зареєструвати вузли на екрані вище.
Крок 6) З’явиться екран Grid Console, який вказує на те, що хаб запущений і працює
Налаштуйте NODES за допомогою JSON
Крок 1) Завантажте зразок файлу конфігурації вузла, наданий Selenium використовуючи наведену нижче URL-адресу
ПРИМІТКА: ЯКЩО ВИ ВИКОРИСТОВУЄТЕ SELENIUM 3.0 АБО НОВІШЕ, ПОТРІБНО ВИКОРИСТОВУВАТИ ФАЙЛ JSON НИЖЧЕ
Крок 2) Скопіюйте та вставте код у текстовий редактор, наприклад Блокнот, і збережіть файл із розширенням «.json».
Крок 3)
Виконайте наведену нижче команду в командному рядку
Java-Dwebdriver.chrome.driver="chromedriver.exe" -Dwebdriver.ie.driver="IEDriverServer.exe" -Dwebdriver.gecko.driver="geckodriver.exe" -jar selenium-server-standalone-2.53.1.jar -role node -nodeConfig node1.json
ПРИМІТКА: Перед виконанням команди переконайтеся, що драйвери для кожного з браузерів завантажено в каталог локальної машини
Крок 4) Після натискання клавіші Enter з’явиться наведений нижче екран
Крок 5) Перейдіть до консолі сітки, щоб перевірити, чи успішно налаштовано вузли
Браузери відображаються на консолі сітки. Таким чином, ми можемо бути впевнені, що вузли налаштовані успішно.
Зразки тестових випадків увімкнено Selenium Сітка:
package com.objectrepository.demo; import org.openqa.selenium.*; import org.openqa.selenium.remote.DesiredCapabilities; import java.net.MalformedURLException; import java.net.URL; import org.openqa.selenium.remote.RemoteWebDriver; import org.testng.Assert; import org.testng.annotations.*; public class SeleniumGrid { WebDriver driver; String baseURL, nodeURL; @BeforeTest public void setUp() throws MalformedURLException { baseURL = "http://demo.guru99.com/test/guru99home/"; nodeURL = "http://192.168.43.223:5566/wd/hub"; DesiredCapabilities capability = DesiredCapabilities.chrome(); capability.setBrowserName("chrome"); capability.setPlatform(Platform.WIN10); driver = new RemoteWebDriver(new URL(nodeURL), capability); } @AfterTest public void afterTest() { driver.quit(); } @Test public void sampleTest() { driver.get(baseURL); if (driver.getPageSource().contains("MOBILE TESTING")) { Assert.assertTrue(true, "Mobile Testing Link Found"); } else { Assert.assertTrue(false, "Failed: Link not found"); } } }
Наведений вище код запускає браузер Chrome і переходить до URL-адреси, зазначеної в змінній 'baseURL'. Він перевірив, що на сторінці відображається назва посилання «Мобільне тестування».
URL у змінній «nodeURL» можна змінити, щоб відображати IP-адресу віддаленого комп’ютера. Результат тесту можна перевірити за замовчуванням TestNG створений звіт
Підсумки
- Selenium Grid використовується для одночасного запуску кількох тестів у різних браузерах і платформах.
- Грід використовує концепцію хаб-вузол.
- Хаб — це центральна точка, куди ви завантажуєте свої тести.
- Вузли є Selenium екземпляри, які виконуватимуть тести, які ви завантажили в концентратор.
- Для установки Selenium Grid, вам потрібно лише завантажити Selenium Файл jar сервера – той самий файл, який використовується під час запуску Selenium RC тести.
- Є 2 способи перевірити, чи хаб працює: один — через командний рядок, а інший — через браузер.
- Щоб запустити тестові сценарії в Grid, ви повинні використовувати об’єкти DesiredCapabilities і RemoteWebDriver.
- DesiredCapabilites використовується для встановлення типу браузера та ОС, які ми будемо автоматизувати.
- RemoteWebDriver використовується для встановлення того, на якому вузлі (або машині) буде працювати наш тест.