Selenium Урок за Grid: Настройка на хъб и възел
⚡ Умно обобщение
Selenium Grid изпълнява множество тестове в браузъри, операционни системи и машини паралелно, използвайки архитектура hub-and-node. Hub зарежда тестове на една машина, докато възлите ги изпълняват на други, което позволява по-бързо покритие между браузъри чрез команден ред или JSON конфигурация.

Какво е Selenium Решетка?
Selenium решетка е част от Selenium Пакет, който е специализиран в провеждането на множество тестове в различни браузъри, операционни системи и машини паралелно. Това се постига чрез маршрутизиране на командите на отдалечени копия на браузъра, където сървърът действа като център. Потребителят трябва да конфигурира отдалечения сървър, за да изпълни тестовете.
Selenium Grid има 2 версии – по-старата Grid 1 и по-новата Grid 2. Ще се съсредоточим само върху Grid 2, тъй като Grid 1 постепенно се отхвърля от Selenium Team.
Selenium решетка Archiтекстура
Selenium Grid има Hub и Node Archiтекстура.

Център
- Хъбът е централната точка, в която зареждате вашите тестове.
- Трябва да има само един хъб в мрежата.
- Хъбът се стартира само на една машина, да речем компютър, чиято ОС е Windows 7 и чийто браузър е IE.
- Машината, съдържаща концентратора, е мястото, където ще се изпълняват тестовете, но ще видите, че браузърът е автоматизиран на възела.
възли
- Възлите са Selenium екземпляри, които ще изпълнят тестовете, които сте заредили в хъба.
- В мрежата може да има един или повече възли.
- Възлите могат да бъдат стартирани на множество машини с различни платформи и браузъри.
- Не е необходимо машините, работещи с възлите, да са същата платформа като тази на хъба.
Selenium Grid използва концепция хъб-възел, при която изпълнявате теста само на една машина, наречена a главина, но изпълнението ще се извършва от различни машини, наречени възли.
Как да настроите Selenium Решетка?
В този раздел ще използвате 2 машини. Първата машина ще бъде системата, която ще управлява хъба, докато другата машина ще управлява възел. За простота нека наречем машината, където работи хъбът, като „Машина A“, докато машината, където работи възелът, ще бъде „Машина B“. Също така е важно да се отбележат техните IP адреси. Да кажем, че машина A има IP адрес 192.168.1.3, докато машина B има IP 192.168.1.4.
Стъпка 1) Изтеглете Selenium Сървър от тук.
Стъпка 2) Можете да поставите Selenium Сървърен .jar файл навсякъде във вашия твърд диск. Но за целите на този урок, поставете го на C устройството както на машина A, така и на машина B. След като направите това, вече сте готови с инсталирането Selenium Решетка. Следващите стъпки ще стартират хъба и възела.
Стъпка 3)
- Сега ще пуснем хъб. Отидете на машина A. С помощта на командния ред навигирайте до корена на устройството A на машина A – C, защото това е директорията, в която поставихме Selenium Server.
- В командния ред въведете java -jar selenium-server-standalone-2.30.0.jar -role hub
- Хъбът трябва да бъде стартиран успешно. Вашият команден ред трябва да изглежда подобно на изображението по-долу.
Стъпка 4) Друг начин да проверите дали хъбът работи е като използвате браузър. Selenium Grid по подразбиране използва порт 4444 на Machine 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 и стартирайте команден ред там.
- Отидете до основата на Drive 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 Решетка уеб интерфейс и опресняване на страницата. Трябва да видите нещо подобно.
На този етап вече сте конфигурирали проста мрежа. Вече сте готови да изпълните тест дистанционно на машина B.
Кога да използвате Selenium Решетка?
Трябва да използвате Selenium Решетка, когато искате да направите едно или и двете от следните:
- Изпълнете вашите тестове срещу различни браузъри, операционни системи и машини едновременно. Това ще гарантира, че приложението, което сте Тестване е напълно съвместим с широк набор от комбинации браузър-ОС.
- Спестете време при изпълнението на вашите тестови пакети. Ако настроите Selenium Решетка, за да стартирате, да речем, 4 теста наведнъж, тогава ще можете да завършите целия пакет около 4 пъти по-бързо.
Grid 1.0 срещу Grid 2.0
Следват основните разлики между Selenium Решетка 1 и 2.
| Решетка 1 | Решетка 2 |
|---|---|
| Selenium Grid 1 има собствено дистанционно управление, което е различно от Selenium RC сървър. Това са две различни програми. | Selenium Решетка 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"
Ще използваме платформата и името на браузъра в нашия WebDriver, както е показано по-долу (разбира се, първо трябва да импортирате необходимите пакети).
Използване на обекта 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) Копирайте и поставете кода в текстов редактор като Notepad с разширение „.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) Копирайте и поставете кода в текстов редактор като Notepad и запазете файла с разширение „.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) Следният екран ще се появи при натискане на клавиша за въвеждане
Стъпка 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 = "https://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 посочено в „базата“URL' променлива. Проверено е, че на страницата се показва име на връзка „Мобилно тестване“
URL на „възела“URL' може да бъде променена, за да отразява IP адреса на отдалечената машина. Резултатът от теста може да бъде проверен по подразбиране TestNG генериран отчет







.png)






