Учебное пособие по Selenium Grid: настройка концентратора и узла (пример)

Что такое Selenium Grid?

Селеновая сетка является частью Selenium Suite, который специализируется на параллельном запуске нескольких тестов в разных браузерах, операционных системах и компьютерах. Это достигается путем маршрутизации команд удаленных экземпляров браузера, где сервер выступает в качестве концентратора. Пользователю необходимо настроить удаленный сервер для выполнения тестов.

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

Селеновая сетка Archiтекстура

Selenium Grid имеет концентратор и узел Archiтектура.

Селеновая сетка Archiтекстура
Селеновая сетка Archiтекстура

хаб

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

Nodes

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

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

Как настроить Selenium Grid?

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

Шаг 1) Загрузите сервер Selenium с сайта здесь.

Настройка Selenium Grid

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

Шаг 3)

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

Настройка Selenium Grid

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

Настройка Selenium Grid

Кроме того, вы можете проверить, может ли машина B получить доступ к веб-интерфейсу хаба, запустив там браузер и перейдя туда, где «iporhostnameofmachineA» должен быть IP-адресом или именем хоста машины, на которой работает хаб. Поскольку IP-адрес машины А — 192.168.1.3, то в браузере машины Б вам следует ввести 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

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

Настройка Selenium Grid

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

Настройка Selenium Grid

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

Когда использовать Selenium Grid?

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

  • Запускайте тесты на разных браузерах, операционных системах и компьютерах одновременно. Это гарантирует, что приложение, которое вы используете Тестирование полностью совместим с широким спектром комбинаций браузера и ОС.
  • Экономьте время при выполнении наборов тестов. Если вы настроите Selenium Grid для запуска, скажем, 4 тестов одновременно, вы сможете выполнить весь пакет примерно в 4 раза быстрее.

Сетка 1.0 против сетки 2.0

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

Сетка 1 Сетка 2
Selenium Grid 1 имеет собственный пульт дистанционного управления, отличный от сервера Selenium RC. Это две разные программы. Selenium Grid 2 теперь поставляется с jar-файлом Selenium Server.
Вам необходимо установить и настроить апаш Сначала Ant, прежде чем вы сможете использовать Grid 1. Вам не нужно устанавливать Apache Ant в Grid 2.
Может поддерживать только команды/скрипты Selenium RC. Может поддерживать сценарии Selenium RC и WebDriver.
Вы можете автоматизировать только один браузер для каждого пульта дистанционного управления. Один пульт дистанционного управления может автоматизировать до 5 браузеров.

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

Разработка тестовых сценариев, которые могут работать в сети

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

  • Желаемые возможности используется для установки типа браузер и OS что мы будем автоматизировать.
  • RemoteWebDriver используется для установки узла (или машины), на котором будет выполняться наш тест.

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

Разработка тестовых сценариев, которые могут работать в сети

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

Разработка тестовых сценариев, которые могут работать в сети

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

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

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

В данном случае платформа — «XP», а имя браузера — «Firefox".

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

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

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

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

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

Запуск примера тестового примера в Grid

Ниже приведен простой 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

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

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

Конфигурация Selenium Grid с использованием файла JSON

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

http://192.168.43.223:4444/grid/console

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

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

Конфигурация Selenium Grid с использованием файла JSON

Настройте УЗЛЫ с помощью 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) Экран ниже появится при нажатии клавиши ввода.

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

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

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

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

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

 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 используется для одновременного запуска нескольких тестов.neoобычно в разных браузерах и платформах.
  • Grid использует концепцию узлового узла.
  • Хаб — это центральная точка, в которую вы загружаете свои тесты.
  • Узлы — это экземпляры Selenium, которые будут выполнять тесты, загруженные вами в хаб.
  • Чтобы установить Selenium Grid, вам нужно всего лишь загрузить jar-файл Selenium Server — тот же файл, который используется при запуске тестов Selenium RC.
  • Есть два способа проверить, работает ли хаб: один — через командную строку, другой — через браузер.
  • Чтобы запустить тестовые сценарии в Grid, вам следует использовать объекты DesiredCapabilities и RemoteWebDriver.
  • DesiredCapabilites используется для установки типа браузера и ОС, которые мы будем автоматизировать.
  • RemoteWebDriver используется для установки узла (или компьютера), на котором будет выполняться наш тест.