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

Что такое Selenium Сетка?

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

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

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

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

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

хаб

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

Nodes

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

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

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

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

Шаг 1) Скачать Selenium Сервер от здесь.

  Selenium сетка

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

Шаг 3)

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

  Selenium сетка

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

  Selenium сетка

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

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

  Selenium сетка

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

  Selenium сетка

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

Когда использовать Selenium Сетка?

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

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

Сетка 1.0 против сетки 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".

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

Ниже приведены шаги по настройке сетки селена с использованием файла конфигурации 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

Настройте УЗЛЫ с помощью 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 Сетка:

 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-адресу, указанному в переменной baseURL. Было подтверждено, что на странице отображается название ссылки «Мобильное тестирование».

URL-адрес переменной nodeURL можно изменить, чтобы он отражал IP-адрес удаленного компьютера. Результат теста можно проверить по умолчанию. TestNG отчет создан

Резюме

  • Selenium Grid используется для одновременного запуска нескольких тестов в разных браузерах и на разных платформах.
  • Grid использует концепцию узлового узла.
  • Хаб — это центральная точка, в которую вы загружаете свои тесты.
  • Узлы – это Selenium экземпляры, которые будут выполнять тесты, загруженные вами в хаб.
  • Для установки Selenium Grid, вам нужно только скачать Selenium JAR-файл сервера — тот же файл, который используется при запуске Selenium RC-тесты.
  • Есть два способа проверить, работает ли хаб: один — через командную строку, другой — через браузер.
  • Чтобы запустить тестовые сценарии в Grid, вам следует использовать объекты DesiredCapabilities и RemoteWebDriver.
  • DesiredCapabilites используется для установки типа браузера и ОС, которые мы будем автоматизировать.
  • RemoteWebDriver используется для установки узла (или компьютера), на котором будет выполняться наш тест.