Selenium Підручник з сітки: налаштування концентратора та вузла (приклад)

Що таке Selenium Сітка?

Selenium сітка є частиною Selenium Набір, який спеціалізується на одночасному виконанні кількох тестів у різних браузерах, операційних системах і машинах. Це досягається шляхом маршрутизації команд віддалених екземплярів браузера, де сервер діє як концентратор. Для виконання тестів користувачеві необхідно налаштувати віддалений сервер.

Selenium Grid має 2 версії – старішу Grid 1 і новішу Grid 2. Ми зосередимося лише на Grid 2, оскільки Grid 1 поступово застарів Selenium Команда.

Selenium сітка Archiтектура

Selenium Сітка має концентратор і вузол Archiтектура.

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 Сервер від тут.

Встановити Selenium сітка

Крок 2) Ви можете розмістити Selenium Файл .jar сервера будь-де на вашому жорсткому диску. Але для цілей цього підручника розмістіть його на диску C комп’ютера A та B. Після цього ви завершили встановлення Selenium Сітка. Наступні кроки запустять концентратор і вузол.

Крок 3)

  • Зараз ми будемо запускати хаб. Перейдіть до комп’ютера А. За допомогою командного рядка перейдіть до кореня диска комп’ютера А – С, тому що це каталог, де ми розмістили Selenium Сервер.
  • У командному рядку введіть java -jar selenium-server-standalone-2.30.0.jar -role hub
  • Хаб повинен бути успішно запущений. Ваш командний рядок має виглядати подібно до зображення нижче.

Встановити Selenium сітка

Крок 4) Ще один спосіб перевірити, чи запущений хаб, — за допомогою браузера. Selenium Grid за замовчуванням використовує порт 4444 машини A для свого веб-інтерфейсу. Просто відкрийте браузер і перейдіть до http://localhost:4444/grid/console

Встановити Selenium сітка

Крім того, ви можете перевірити, чи може машина 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

Встановити Selenium сітка

  • Коли ви натискаєте Enter, ваш командний рядок має бути схожим на зображення нижче.

Встановити Selenium сітка

Крок 6) Перейти до Selenium Веб-інтерфейс Grid і оновіть сторінку. Ви повинні побачити щось подібне.

Встановити Selenium сітка

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

Використання об’єкта DesiredCapabilites

У цьому випадку платформа – «XP», а назва браузера – «Firefox».

Ми будемо використовувати платформу та назву браузера в нашому веб-драйвері, як показано нижче (звичайно, спочатку потрібно імпортувати необхідні пакети).

Використання об’єкта DesiredCapabilites

Використання об’єкта RemoteWebDriver

Імпортуйте необхідні пакети для RemoteWebDriver, а потім передайте створений вище об’єкт DesiredCapabilities як параметр для об’єкта RemoteWebDriver.

Використання об’єкта 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, використовуючи шлях нижче

https://github.com/SeleniumHQ/selenium/blob/selenium-3.141.59/java/server/src/org/openqa/grid/common/defaults/DefaultHub.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) З’явиться наведений нижче екран, який вказує на успішне налаштування концентратора

Selenium Конфігурація сітки за допомогою файлу JSON

Крок 5) Відкрийте веб-переглядач і спробуйте підключитися до наведеної нижче URL-адреси

http://192.168.43.223:4444/grid/console

ПРИМІТКА: URL-адреса може відрізнятися від машини до машини. Потрібно використовувати URL-адресу, за якою слід зареєструвати вузли на екрані вище.

Крок 6) З’явиться екран Grid Console, який вказує на те, що хаб запущений і працює

Selenium Конфігурація сітки за допомогою файлу JSON

Налаштуйте NODES за допомогою JSON

Крок 1) Завантажте зразок файлу конфігурації вузла, наданий Selenium використовуючи наведену нижче URL-адресу

https://github.com/SeleniumHQ/selenium/blob/selenium-2.53.0/java/server/src/org/openqa/grid/common/defaults/DefaultNode.json

ПРИМІТКА: ЯКЩО ВИ ВИКОРИСТОВУЄТЕ SELENIUM 3.0 АБО НОВІШЕ, ПОТРІБНО ВИКОРИСТОВУВАТИ ФАЙЛ JSON НИЖЧЕ

https://github.com/SeleniumHQ/selenium/blob/selenium-3.141.59/java/server/src/org/openqa/grid/common/defaults/DefaultNodeWebDriver.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 з’явиться наведений нижче екран

Налаштувати вузли за допомогою JSON

Крок 5) Перейдіть до консолі сітки, щоб перевірити, чи успішно налаштовано вузли

Налаштувати вузли за допомогою JSON

Браузери відображаються на консолі сітки. Таким чином, ми можемо бути впевнені, що вузли налаштовані успішно.

Зразки тестових випадків увімкнено 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 використовується для встановлення того, на якому вузлі (або машині) буде працювати наш тест.