Что такое Selenium Grid?
Selenium Grid является частью Selenium Suite, которая специализируется на параллельном выполнении нескольких тестов в разных браузерах, операционных системах и машинах.
У Selenium Grid есть 2 версии — старая Grid 1 и более новая Grid 2. Мы сосредоточимся только на Grid 2, потому что Grid 1 постепенно осуждается командой Selenium.
Selenium Grid использует концепцию узловых узлов, когда вы запускаете тест только на одной машине, называемой концентратором , но выполнение будет выполняться на разных машинах, называемых узлами .
В этом уроке вы узнаете
- Что такое Selenium Grid?
- Когда использовать Selenium Grid?
- Сетка 1.0 против Сетка 2.0
- Selenium Grid Architecture
- Как настроить Selenium Grid? Использование командной строки
- Разработка тестовых сценариев, которые могут работать на сетке
- Использование объекта DesiredCapabilites
- Использование объекта RemoteWebDriver
- Выполнение тестового примера на сетке
- Настройка сетки Selenium с использованием файла JSON
- Настройте узлы с помощью JSON
Когда использовать Selenium Grid?
Вы должны использовать Selenium Grid, если хотите выполнить одно или оба из следующих действий:
- Запускайте тесты одновременно на разных браузерах, операционных системах и машинах. Это гарантирует , что приложение вы тестирование полностью совместимо с широким спектром комбинаций браузера ОС.
- Экономьте время при выполнении ваших тестов . Если вы настроите Selenium Grid для запуска, скажем, 4 тестов за раз, тогда вы сможете завершить весь пакет примерно в 4 раза быстрее.
Ниже приведены основные различия между 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 отсюда .
Шаг 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
- Концентратор должен быть успешно запущен. Ваша командная строка должна выглядеть примерно так, как показано ниже
Шаг 4
Другой способ проверить, работает ли концентратор, — это использовать браузер. Selenium Grid по умолчанию использует порт 4444 компьютера А для своего веб-интерфейса. Просто откройте браузер и перейдите по адресу 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 и запустите там командную строку.
- Перейдите в корень диска 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 Grid и обновите страницу. Вы должны увидеть что-то вроде этого.
На данный момент вы уже настроили простую сетку. Теперь вы готовы дистанционно запустить тест на компьютере B.
Для разработки тестовых сценариев, которые будут работать в сетке, нам нужно использовать объекты DesiredCapabilites и RemoteWebDriver .
- DesiredCapabilites используется для установки типа браузера и ОС, которые мы будем автоматизировать.
- RemoteWebDriver используется для установки узла (или машины), с которым будет работать наш тест.
Чтобы использовать объект DesiredCapabilites , вы должны сначала импортировать этот пакет
Чтобы использовать объект RemoteWebDriver , вы должны импортировать эти пакеты.
Использование объекта DesiredCapabilites
Перейдите к веб-интерфейсу Grid и наведите курсор на изображение браузера, которое вы хотите автоматизировать. Обратите внимание на платформу и имя браузера, отображаемое во всплывающей подсказке.
В этом случае платформа — «XP», а browserName — «Firefox».
Мы будем использовать платформу и имя браузера в нашем WebDriver, как показано ниже (конечно, сначала вам необходимо импортировать необходимые пакеты).
Использование объекта RemoteWebDriver
Импортируйте необходимые пакеты для RemoteWebDriver, а затем передайте объект DesiredCapabilities, который мы создали выше, в качестве параметра для объекта RemoteWebDriver.
Ниже приведен простой код WebDriver Testng , который можно создать в Eclipse на компьютере A. После его запуска на компьютере B будет выполнена автоматизация.
Тест должен пройти.
Настройка сетки 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
Шаг 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.