Учебники

36) Селеновая сетка

Что такое Selenium Grid?

Selenium Grid является частью Selenium Suite, которая специализируется на параллельном выполнении нескольких тестов в разных браузерах, операционных системах и машинах.

У Selenium Grid есть 2 версии — старая Grid 1 и более новая Grid 2. Мы сосредоточимся только на Grid 2, потому что Grid 1 постепенно осуждается командой Selenium.

Selenium Grid Tutorial: пошаговое руководство с примером

Selenium Grid использует концепцию узловых узлов, когда вы запускаете тест только на одной машине, называемой концентратором , но выполнение будет выполняться на разных машинах, называемых узлами

Вы должны использовать Selenium Grid, если хотите выполнить одно или оба из следующих действий:

 

Ниже приведены основные различия между Selenium Grid 1 и 2.

Сетка 1

Сетка 2

Selenium Grid 1 имеет свой собственный пульт дистанционного управления, который отличается от сервера Selenium RC. Это две разные программы.

Selenium Grid 2 теперь поставляется вместе с файлом JAR Selenium Server

Вам необходимо установить и настроить Apache Ant, прежде чем вы сможете использовать Grid 1.

Вам не нужно устанавливать Apache Ant в Grid 2.

Может поддерживать только команды / скрипты Selenium RC.

Может поддерживать скрипты Selenium RC и WebDriver.

Вы можете автоматизировать только один браузер для каждого пульта дистанционного управления.

Один пульт дистанционного управления может автоматизировать до 5 браузеров.

Selenium Grid Architecture

Selenium Grid имеет Hub и Node Architecture.

Концентратор

  • Концентратор является центральной точкой, в которую вы загружаете свои тесты.
  • В сетке должен быть только один концентратор.
  • Концентратор запускается только на одной машине, скажем, на компьютере с операционной системой Windows 7 и браузером IE.
  • На машине, на которой расположен концентратор, будут выполняться тесты, но вы увидите, что браузер автоматизирован на узле.

Узлы

  • Узлы — это экземпляры Selenium, которые будут выполнять тесты, загруженные вами в концентратор.
  • В сетке может быть один или несколько узлов.
  • Узлы могут быть запущены на нескольких машинах с разными платформами и браузерами.
  • Машины, на которых работают узлы, не обязательно должны иметь ту же платформу, что и платформа концентратора.

Селеновая сетка может быть настроена двумя разными способами; один через командную строку, а другой через файл конфигурации JSON.

Как настроить Selenium Grid? Использование командной строки

В этом разделе вы будете использовать 2 машины. Первой машиной будет система, которая будет запускать концентратор, в то время как другая машина будет запускать узел. Для простоты, назовем машину, на которой работает концентратор, «машиной А», а машиной, на которой работает узел, будет «машиной Б.» Также важно отметить их IP-адреса. Допустим, у машины A IP-адрес 192.168.1.3, а у машины B IP 192.168.1.4.

Шаг 1

Загрузите Selenium Server отсюда .

Selenium Grid Tutorial: пошаговое руководство с примером

Шаг 2

Вы можете разместить файл .jar Selenium Server в любом месте вашего жесткого диска. Но для целей этого учебного руководства поместите его на диск C как на машине A, так и на машине B. После этого вы завершили установку Selenium Grid. Следующие шаги запустят концентратор и узел.

Шаг 3

  • Сейчас мы собираемся запустить хаб. Перейдите на компьютер A. С помощью командной строки перейдите к корню диска компьютера A — C, потому что это каталог, в который мы поместили Selenium Server.
  • В командной строке введите java -jar selenium-server-standalone-2.30.0.jar -role hub
  • Концентратор должен быть успешно запущен. Ваша командная строка должна выглядеть примерно так, как показано ниже

Selenium Grid Tutorial: пошаговое руководство с примером

Шаг 4

Другой способ проверить, работает ли концентратор, — это использовать браузер. Selenium Grid по умолчанию использует порт 4444 компьютера А для своего веб-интерфейса. Просто откройте браузер и перейдите по адресу http: // localhost: 4444 / grid / console

Selenium Grid Tutorial: пошаговое руководство с примером

Кроме того, вы можете проверить, может ли машина 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 Grid Tutorial: пошаговое руководство с примером

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

Selenium Grid Tutorial: пошаговое руководство с примером

Шаг 6

Перейдите в веб-интерфейс Selenium Grid и обновите страницу. Вы должны увидеть что-то вроде этого.

Selenium Grid Tutorial: пошаговое руководство с примером

На данный момент вы уже настроили простую сетку. Теперь вы готовы дистанционно запустить тест на компьютере B.

Для разработки тестовых сценариев, которые будут работать в сетке, нам нужно использовать объекты DesiredCapabilites и RemoteWebDriver .

  • DesiredCapabilites используется для установки типа браузера и ОС, которые мы будем автоматизировать.
  • RemoteWebDriver используется для установки узла (или машины), с которым будет работать наш тест.

Чтобы использовать объект DesiredCapabilites , вы должны сначала импортировать этот пакет

Selenium Grid Tutorial: пошаговое руководство с примером

Чтобы использовать объект RemoteWebDriver , вы должны импортировать эти пакеты.

Selenium Grid Tutorial: пошаговое руководство с примером

Использование объекта DesiredCapabilites

Перейдите к веб-интерфейсу Grid и наведите курсор на изображение браузера, которое вы хотите автоматизировать. Обратите внимание на платформу и имя браузера, отображаемое во всплывающей подсказке.

Selenium Grid Tutorial: пошаговое руководство с примером

В этом случае платформа — «XP», а browserName — «Firefox».

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

Selenium Grid Tutorial: пошаговое руководство с примером

Использование объекта RemoteWebDriver

Импортируйте необходимые пакеты для RemoteWebDriver, а затем передайте объект DesiredCapabilities, который мы создали выше, в качестве параметра для объекта RemoteWebDriver.

Selenium Grid Tutorial: пошаговое руководство с примером

Ниже приведен простой код WebDriver Testng , который можно создать в Eclipse на компьютере A. После его запуска на компьютере B будет выполнена автоматизация.

Selenium Grid Tutorial: пошаговое руководство с примером

 Тест должен пройти.

Selenium Grid Tutorial: пошаговое руководство с примером

Selenium Grid Tutorial: пошаговое руководство с примером

Настройка сетки Selenium с использованием файла JSON:

JSON расшифровывается как Javascript Object Notation. Это стандартный формат, используемый для обмена данными между браузером и веб-сервером. 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

ПРИМЕЧАНИЕ. Отдельный файл jar Selenium и файл json должны находиться в одном каталоге

Шаг 4) Появится экран ниже, который указывает, что концентратор успешно установлен

Шаг 5) Откройте веб-браузер и попробуйте подключиться к указанному ниже URL

http://192.168.43.223:4444/grid/console

ПРИМЕЧАНИЕ . URL-адрес может отличаться для разных компьютеров. Должен использоваться URL, за которым следует «Узлы должны зарегистрироваться» на приведенном выше экране.

Шаг 6) Появится экран Grid Console, который показывает, что концентратор запущен и работает

Настройте узлы, используя JSON:

Шаг 1) Загрузите пример файла конфигурации узла, предоставленного Selenium, используя следующий URL-адрес https://github.com/SeleniumHQ/selenium/blob/selenium-2.53.0/java/server/src/org/openqa/grid/common/ по умолчанию / 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) При нажатии клавиши ввода появится экран, показанный ниже.

Шаг 5) Перейдите к консоли сетки, чтобы проверить, были ли успешно настроены узлы.

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

Примеры тестовых случаев на сетке селена:

 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:4444/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");
         }

     }

 }

The above code launches chrome browser and navigates to the URL specified in the ‘baseURL’ variable. It verified a link name ‘Mobile Testing’ is displayed on the page

URL on the ‘nodeURL’ variable can be modified to reflect the IP Address of the remote machine. Test result can be verified on the default TestNG report generated

Summary

  • Selenium Grid is used to run multiple tests simultaneously on different browsers and platforms.
  • Grid uses the hub-node concept.
  • The hub is the central point wherein you load your tests.
  • Nodes are the Selenium instances that will execute the tests that you loaded on the hub.
  • To install Selenium Grid, you only need to download the Selenium Server jar file — the same file used in running Selenium RC tests.
  • There are 2 ways to verify if the hub is running: one was through the command prompt, and the other was through a browser
  • To run test scripts on the Grid, you should use the DesiredCapabilities and the RemoteWebDriver objects.
  • DesiredCapabilites is used to set the type of browser and OS that we will automate
  • RemoteWebDriver is used to set which node (or machine) that our test will run against.