Настройка Selenium Grid для распределенного тестирования Selenium



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

В других блогах этой серии руководств по Selenium рассказывается о создании тестовых примеров и их последовательном и параллельном выполнении. Итак, последний прием, который мы обсудим, - это выполнение тестовых примеров на удаленных машинах. Selenium Grid можно использовать для выполнения этих тестов на удаленных машинах / хостах. Следовательно, это тема обсуждения сегодняшнего блога.

  1. Почему и когда использовать Selenium Grid?
  2. Что такое Selenium Grid?
  3. Selenium Grid 1 против Selenium Grid 2
  4. Архитектура Selenium Grid
  5. Построение Selenium Grid

Почему и когда использовать Selenium Grid?

Сегодня используется очень много веб-браузеров. Пользователи могут использовать Chrome, Firefox, Safari, Opera или даже Internet Explorer для чтения этого блога. Они могут использовать разные версии браузеров. Они также могут запускать эти браузеры в любой ОС, будь то Windows, Mac, Ubuntu или любой другой дистрибутив Linux.





Что, если пользователи увидят что-то важное в Интернете? Что-то важное для вашего бизнеса. Разве вы не хотите пройти лишнюю милю (протестировать веб-приложение) только для того, чтобы убедиться, что ваши пользователи и / или клиенты получают лучший пользовательский опыт? Вы бы, правда?

Что ж, тебе стоит!



Но вопрос в том, насколько это возможно? Сможете ли вы потратить время на тестирование своего веб-приложения на всех возможных ОС и всех доступных веб-браузерах? Хм, это звучит немного сложно. Здесь Selenium Grid отвечает всем требованиям и помогаетэкономьте свое время и силы.

В дополнение к этому возникает еще один вопрос: жизнеспособно ли создание сетевой инфраструктуры Selenium с использованием локальных систем? Поддержание сетки со всеми необходимыми браузерами и операционными системами является сложной задачей. Для этого существует несколько онлайн-платформ, которые предоставляют онлайн-сетку Selenium Grid, к которой вы можете получить доступ для запуска своих сценариев автоматизации Selenium. Например, вы можете использовать LambdaTest . Он имеет более 2000 браузерных сред, в которых вы можете запускать тесты и полностью автоматизировать кроссбраузерное тестирование.

Что такое селеновая сетка?

Selenium Grid - еще один важный инструмент в наборе инструментов Selenium. Grid может координировать тесты WebDriver / RC-тесты, которые могут выполняться одновременно в нескольких веб-браузерах или могут запускаться в разных операционных системах или даже размещаться на разных машинах.



сетка рабочая - селеновая сеткаИтак, как это работает? Grid использует архитектуру Hub-Node, где есть один Hub, который действует как главный, и один или несколько Nodes, действующих как slave.

Это означает, что если у вас есть в общей сложности 100 заданий / тестов, которые необходимо выполнить, тогда тесты могут выполняться одновременно на 5 машинах, где каждая машина будет выполнять 20 тестов. Фактически, вы можете выполнять эти тесты в различных комбинациях операционных систем и браузеров. Здесь каждая машина может быть с разной ОС, и внутри каждой ОС тесты могут выполняться в разных браузерах.

Это действие легко сэкономит вам много времени на выполнение теста. Если вы рассмотрите приведенный выше пример, то мы можем сократить время выполнения примерно до 1/5 от общего времени, необходимого для выполнения тестов на одной машине.

Если вы помните из моих предыдущих блогов, я бесчисленное количество раз упоминал, что Grid был частью проекта Selenium с момента его создания, то есть с Selenium v1. Selenium Grid также был частью Selenium v2, а в настоящее время является частью Selenium v3. Нет большой разницы в версиях v2 и v3 Selenium Grid. Однако v1 имеет сравнительно много отличий. Итак, начнемпонять различия между v1 и v2.

Selenium Grid 1 против Selenium Grid 2

Основное различие между Grid v1.0 и v2.0 состоит в том, что RC использовался в Grid 1, а WebDriver использовался в Grid 2. В таблице ниже подробно объясняются различия.

Сетка 1 Сетка 2
Требуется установка Apache AntУстановка Apache Ant не требуется
Имеет собственный пульт дистанционного управления (отличается от RC-сервера)В комплекте с файлом jar Selenium Server
Поддерживает только команды Selenium RCПоддерживает сценарии Selenium RC и WebDriver.
Вы можете автоматизировать только один браузер на каждом пульте дистанционного управленияВы можете автоматизировать до 5 браузеров на один пульт ДУ


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

Архитектура Selenium Grid

Как я уже упоминал ранее, Grid работает на основе одного концентратора и нескольких узлов. Но что такое хаб и узлы и что они делают?

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

В любой настройке Grid может быть только один Hub, и он будет центральной точкой в ​​этой настройке Grid. Здесь должны быть загружены все тесты, которые необходимо выполнить. Несмотря на то, что здесь загружаются тесты, они будут выполняться только на узлах. Мы можем настроить любой хост-компьютер в качестве нашего концентратора, и он будет координировать действия по выполнению тестов на других хостах.

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

Настройка концентратора

Прежде всего, вам необходимо загрузить JAR-файл сервера Selenium с веб-сайта Seleniumhq. Ссылка есть Вот . Вам также необходимо убедиться, что в вашей системе установлена ​​Java и заданы переменные среды.

После того, как вы загрузили файл jar, вам необходимо поместить его в соответствующий каталог. Для удобства я скачал его и поместил в папку Selenium на C Drive. Рекомендуется также загрузить файл jar и поместить его в аналогичный каталог на всех других узлах.

Чтобы настроить хаб, вам нужно запустить команду в командной строке Windows. Команда представлена ​​в приведенном ниже фрагменте.

C: UsersVardhan> cd .. C: Users> cd .. C:> cd Selenium C: Selenium> java -jar selenium-server-standalone-3.4.0.jar -role hub

В селен-сервер-автономный-3.4.0.jar это имя загруженного мной файла jar.
В -роль Флаг используется для установки этой конкретной хост-машины в качестве концентратора. Когда вы нажмете Enter, вы получите на экране следующий результат.

Если вы не заметили приведенный выше снимок экрана, посмотрите его снова. В нем говорится: « - Узлы должны регистрироваться на http://192.168.0.11:4444/grid/register. ‘. Теперь, когда хаб настроен, нам нужно настроить узлы и подключить их к этому хабу.

192.168.0.11 - это IP-адрес концентратора, и каждый узел должен подключаться к этому IP-адресу. 4444 - это номер порта по умолчанию, на котором Selenium Grid размещается и принимает запросы. Если на порту 4444 запущена какая-то другая служба, и вы хотите, чтобы Selenium Grid размещался на другом порту, вы можете сделать это, указав -порт флаг, за которым следует номер порта.

Узлы

Узлы - это хост-машины, на которых выполняются тесты. Эти тесты будут запускать хаб. Хаб может запускать один или несколько узлов либо на удаленных машинах, либо на той же машине, на которой расположен сам Хаб. На каждом из узлов могут быть загружены разные операционные системы, а в разных операционных системах могут быть запущены разные версии одного и того же браузера или разные браузеры.

Настройка узлов

Как и в случае с концентратором, вам необходимо сначала загрузить файл Jar на машины узла и поместить его на диск C или любой другой общий каталог для вашего удобства. Затем вы можете запустить приведенную ниже команду в командной строке Windows. Если вы запускаете даже узел на том же компьютере, что и ваш концентратор, вам необходимо выполнить команду, запустив другую командную строку.

разница между aws и лазурью
java -Dwebdriver.chrome.driver = E: chromedriver.exe -jar selenium-server-standalone-3.4.0.jar -role node -hub http://192.168.0.11:4444/grid/register

Эта команда немного отличается от команды, необходимой для запуска Hub.
-Dwebdriver.chrome.driver = E: chromedriver.exe используется для установки пути к драйверу браузера. Подобно настройке пути к драйверу браузера в коде WebDriver, вы указываете его здесь, чтобы узел мог выполнять тесты. Начиная с Selenium v3, вам необходимо загрузить драйвер браузера для Firefox. Драйвер браузера для Firefox - это драйвер Gecko. Однако в версиях 1 и 2 вам необходимо установить драйвер браузера для всех браузеров, кроме Firefox.
-ролевой узел Флаг используется для установки этой конкретной хост-машины как Node.
-хаб http://192.168.0.11:4444/grid/register информирует узел о необходимости подключения к концентратору, используя IP-адрес концентратора. Важно отметить, что если вы запускаете какой-либо узел на том же компьютере, что и ваш концентратор, вы можете указать ‘ -hub http: // локальный: 4444 / сетка / регистр ‘В команде вместо IP-адреса хаба.

Когда вы нажмете Enter, вы получите следующий вывод в командной строке.

К настоящему времени узел был бы подключен к хабу. Вы можете убедиться в этом, вернувшись в командную строку, используемую для запуска Hub, и вы увидите следующее сообщение: ‘ Зарегистрировал узел http://192.168.0.11:5555 ‘.

IP-адрес и номер порта - это ваш Node. Поскольку мой узел находится на той же машине, что и мой концентратор, для узла используется порт 5555. Когда вы запускаете его на другом компьютере, будет использоваться порт по умолчанию.

Когда вы запустите следующий URL-адрес на компьютере вашего хаба, вы получите статус узлов, подключенных к вашему хабу. См. Выделенную часть на снимке экрана ниже.

Теперь, когда ваша Selenium Grid настроена, вы можете приступить к выполнению тестовых скриптов на Nodes. Позвольте мне еще раз подчеркнуть, что нам нужно запускать скрипты в нашем хабе, и они будут выполняться на наших узлах. Скрипт, используемый для выполнения тестов, похож на WebDriver.тесты.

Построение селеновой сетки

Я запустил свой скрипт в Eclipse IDE. Выполнение этого сценария зависит от двух важных библиотечных пакетов. Они есть Желаемые возможности объект и RemoteWebDriver объект.

DesiredCapabilities используется для установки типа браузера и ОС нашего Node. Чтобы импортировать объект DesiredCapabilities, используйте приведенный ниже код.

импортировать org.openqa.selenium.remote.DesiredCapabilities

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

import java.net.MalformedURLException import java.net.URL import org.openqa.selenium.remote.RemoteWebDriver

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

Когда вы перемещаетесь по логотипам любого браузера, присутствующего в консоли Selenium Hub, вы получаете такие детали, как browserName и Платформа узла, который вы хотите автоматизировать. Изображение также показывает, сколько экземпляров браузеров я могу открыть в моем Node. Я могу настроить максимум 5 экземпляров Chrome, 5 Firefox и 1 Internet Explorer. Эти детали представлены на скриншоте ниже.

Вы можете использовать код из приведенного ниже фрагмента, чтобы настроить свою первую сетку.

пакет GridTest import org.testng.annotations.AfterTest import org.testng.annotations.BeforeTest import org.testng.annotations.Test import java.net.MalformedURLException import java.net.URL import org.junit.Assert import org.openqa.selenium .Platform import org.openqa.selenium.WebDriver import org.openqa.selenium.remote.DesiredCapabilities import org.openqa.selenium.remote.RemoteWebDriver общедоступный класс TestGrid {статическая настройка драйвера WebDriver статическая строка nodeUrl @BeforeTest nodeUrl = 'http://192.168.0.11:5555/wd/hub' DesiredCapabilitiesabilities = DesiredCapabilities.chrome () features.setBrowserName ('chrome') features.setPlatform (Platform.WINDOWS) driver = new RemoteWebDriver (новый URL-адрес (nodeUrl ), возможности)} @Test public void simpleTest () Edureka ', driver.getTitle ()) @AfterTest public void afterTest () {driver.quit ()}}

Я разделил весь тестовый сценарий на три тестовых аннотации. @BeforeTest, @Test и @AfterTest. В @BeforeTest я использовал объекты DesiredCapablities и RemoteWebDriver для настройки моего узла. В @Test я попросил узел перейти на домашнюю страницу Edureka и подтвердить заголовок страницы. В @AfterTest я попросил узел закрыть экземпляр браузера.

Когда ваш тест завершится успешно, вы получите следующий результат.

18 мая 2017 г. 15:09:07 org.openqa.selenium.remote.ProtocolHandshake createSession INFO: обнаруженный диалект: OSS PASSED: simpleTest ===================== ========================== Тест по умолчанию Выполнено тестов: 1, Ошибок: 0, Пропусков: 0 ========== ===================================== ============= ================================== Набор по умолчанию Всего выполненных тестов: 1, сбоев: 0, пропусков: 0 = ==============================================

Поскольку это выполняется как тест TestNG, вы получите подробный отчет о тестировании, аналогичный снимку экрана ниже.

Если вы не знаете, что такое TestNG и как использовать тестовые аннотации, прочтите мой блог о том, как использовать Selenium WebDriver с TestNG из этой серии руководств по Selenium.

Вы можете посмотреть видео ниже, чтобы засвидетельствовать демонстрацию того, как построить Selenium Grid. Преподаватель, показывающий видео, объясняет те же концепции, что и в этом блоге.

Руководство по Selenium Grid для начинающих | Selenium Tutorial | Эдурека

Итак, это подводит нас к концу этого блога Selenium Grid. Если у вас есть какие-либо сомнения или проблемы с каким-либо кодом / контентом этой серии блогов, оставьте их в разделе комментариев ниже, и я решу вашу проблему в ближайшее время.

Если вы хотите изучить Selenium и построить карьеру в области тестирования, ознакомьтесь с нашим интерактивным онлайн-сайтом. Здесь вам предоставляется круглосуточная поддержка, которая поможет вам на протяжении всего периода обучения.

Есть вопрос к нам? Пожалуйста, отметьте это в разделе комментариев, и мы свяжемся с вами.