Selenium Урок за Grid: Настройка на хъб и възел

⚡ Умно обобщение

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

  • 🧩 Дефинирана мрежа: Изпълнява тестове в браузъри, операционни системи и машини паралелно чрез хъб и възли.
  • 🎯 Център за: Единната централна машина, където зареждате тестове; само един хъб на мрежа.
  • възли: Една или повече машини, които действително изпълняват тестовете на различни платформи.
  • Setup: Стартиране на Selenium Сървърен jar файл с -role хъб и -role възел или използвайте JSON конфигурационен файл.
  • 🧪 Тестови скриптове: Използвайте DesiredCapabilities и RemoteWebDriver, за да насочите браузър, операционна система и възел.
  • Кога да използвате: Широки проверки за съвместимост между браузъра и операционната система и по-бързо паралелно изпълнение на пакети.

Selenium Урок за мрежата

Какво е Selenium Решетка?

Selenium решетка е част от Selenium Пакет, който е специализиран в провеждането на множество тестове в различни браузъри, операционни системи и машини паралелно. Това се постига чрез маршрутизиране на командите на отдалечени копия на браузъра, където сървърът действа като център. Потребителят трябва да конфигурира отдалечения сървър, за да изпълни тестовете.

Selenium Grid има 2 версии – по-старата Grid 1 и по-новата Grid 2. Ще се съсредоточим само върху Grid 2, тъй като Grid 1 постепенно се отхвърля от Selenium Team.

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

Selenium Grid има Hub и Node Archiтекстура.

Selenium решетка Archiтекстура
Selenium решетка 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 Сървър от тук.

Set Up 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
  • Хъбът трябва да бъде стартиран успешно. Вашият команден ред трябва да изглежда подобно на изображението по-долу.

Set Up Selenium решетка

Стъпка 4) Друг начин да проверите дали хъбът работи е като използвате браузър. Selenium Grid по подразбиране използва порт 4444 на Machine A за своя уеб интерфейс. Просто отворете браузър и отидете на http://localhost:4444/grid/console

Set Up Selenium решетка

Освен това можете да проверите дали машина 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

Set Up Selenium решетка

  • Когато натиснете Enter, вашият команден ред трябва да е подобен на изображението по-долу.

Set Up Selenium решетка

Стъпка 6) Отидете в Selenium Решетка уеб интерфейс и опресняване на страницата. Трябва да видите нещо подобно.

Set Up 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 и задръжте курсора на мишката върху изображение на браузъра, който искате да автоматизирате. Обърнете внимание на платформа, и име на браузъра показано от подсказката.

Използване на обекта DesiredCapabilites

В този случай платформата е „XP“, а името на браузъра е „Firefox"

Ще използваме платформата и името на браузъра в нашия WebDriver, както е показано по-долу (разбира се, първо трябва да импортирате необходимите пакети).

Използване на обекта 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) Копирайте и поставете кода в текстов редактор като Notepad с разширение „.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) Копирайте и поставете кода в текстов редактор като 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) Следният екран ще се появи при натискане на клавиша за въвеждане

Конфигурирайте възли с помощта на 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 = "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 генериран отчет

Въпроси и Отговори

Хъбът е единствената централна машина, където зареждате тестове и управлявате мрежата. Възлите са машините, които действително изпълняват тестовете на специфични комбинации от браузъри и операционни системи. Една мрежа има един хъб и един или повече възли.

Grid 1 използва отделно дистанционно управление и изисква Apache Ant, поддържайки само Selenium RC скриптове и един браузър за всеки контрол. Grid 2 е включен в пакета с Selenium Сървърен jar файл, не се нуждае от Ant и поддържа както RC, така и WebDriver скриптове.

Създайте обект DesiredCapabilities, задайте неговите browserName и платформа, след което го прехвърлете на RemoteWebDriver, насочен към възела URLМрежата насочва теста към съответстващ възел за този браузър и операционна система.

Изкуственият интелект може да приоритизира и паралелизира тестове, да предвижда нестабилни тестове, да балансира натоварването между възлите и да се самовъзстановява от повредени локатори. Това намалява времето за изпълнение и усилията за поддръжка на големи мрежи, работещи с много комбинации от браузър и операционна система.

Да. Инструментите с изкуствен интелект могат да препоръчат оптимален брой възли, да генерират JSON конфигурации, автоматично да мащабират облачни мрежи въз основа на дължината на опашката и да откриват недоизползван капацитет, помощping екипите управляват големи пакети ефективно без ръчна настройка.

Обобщете тази публикация с: