Будучи тестировщиком или опытным веб-разработчиком, вам необходимо тестировать свои приложения на наличие ошибок и производительность во всех доступных браузерах и операционных системах. Но с таким количеством зависимостей, имея не только разные браузеры, но и разные их версии, эта задача становится весьма сложной.
Самое главное, все эти процессы должны быть максимально автоматизированы, потому что в крупных компаниях создание тестов и пайплайнов вручную было бы дорогостоящим и, очевидно, наименее предпочтительным методом. Именно здесь на сцену выходит Selenium Grid — широко используемый серверный инструмент для автоматизации тестирования.
Что такое Selenium Grid?
Selenium Grid — это инструмент, используемый для параллельного и непрерывного тестирования в нескольких браузерах и средах. Он позволяет запускать тесты одновременно на разных машинах с использованием различных браузеров и операционных систем. Цель Selenium Grid — распределить нагрузку на выполнение тестов по нескольким машинам, ускоряя выполнение большого количества тестов.
Архитектура Selenium Grid в основном включает хаб и множество узлов. Хаб действует как центральная точка, куда отправляются запросы на выполнение тестов. Узлы — это машины (физические или виртуальные), на которых выполняются тесты. Хаб направляет запросы на выполнение тестов на соответствующие узлы в зависимости от настроек браузера и платформы, указанных в тестовых скриптах.
Селеenium Grid поддерживает различные конфигурации и распределенные тесты, включая параллельное выполнение и выборковое тестирование возможностей браузера. Он обычно используется в автоматизированных тестах, чтобы обеспечить совместимость и работоспособность в различных браузерах и платформах.
Почему нужен Selenium Grid?
Вы, скорее всего, интересуетесь тем, почему мы его вообще нужно. рассмотрим это конкретно, это часть набора Selenium, который также включает другие программы и функции, такие как Selenium WebDriver и Selenium IDE, и мы увидели, как он поддерживает браузеры, такие как Chrome, Microsoft Edge, Opera, Safari и все их различные версии вместе. Кроме того, он также может запускать эти браузеры на множестве операционных систем, создавая систему тестирования от начала до конца. Будучи open-source, он также доступен бесплатно и получает самые быстрые обновления и развитие с полной доступностью к всей информации.
Архитектура Selenium Grid
Посмотрим на архитектуру Selenium Grid. Selenium Grid работает в модели Hub и Node, где один Hub связан с множеством узлов и может работать на различных машинах, браузерах и различных версиях их браузеров.
Hub является центральным пунктом в Selenium grid, который направляет команды теста на узлы. Также он получает запросы теста от клиента и передает их на нужные узлы. Hub запускается на одном компьютере с определенной операционной системой и браузером с полной тестировльными браузерами и их версиями, а также с возможностью установки на множестве устройств, работающих под совместимой операционной системой.
Selenium также определил другие компоненты в архитектуре, о которых подробно рассказано на его сайте, которые могут быть полезны для запуска Selenium в полностью распределенном режиме с маршрутизаторами, сессиями и дистрибуторами. now that we have enough background knowledge on SeleniumGrid,
Selenium Grid Can Be Installed and Used in 4 Easy Steps
Step 1
In step 1, let’s set up the prerequisites quickly.
First, we need to ensure that we are running the latest version of Java, or Java 11 and higher. This can be downloaded from the official website.
Then we would need to install all the needed browsers that we wish to test on. We will be using a Chrome browser driver with version 123 for accessing the Chrome browser. Also, do keep in mind that the versions of both driver and browser should be the same to run the Selenium servers. And finally, I will be using Eclipse IDE, as this demo will be based on Java. This IDE can be downloaded from the official Eclipse website.
Для окончательного предварительного требования нам потребуется загрузить последний сервер Selenium Grid с официального сайта Selenium.
Шаг 2
Теперь let’s start with step 2. Для этого шага, я создал новую папку и вставил мой сервер Selenium и водитель Chrome, которые я буду использовать для этой демонстрации.
package Selenium_test1 ;
import java.net.MalformedURLException;
public class test1{
String hubUrl ="https://10.20.31.20";
String url ="https://www.world.co/search";
WebDriver driver;
public void setupGrid()
{
DesiredCapabilities ds= new DesiredCapabilities();
ds.setCapability("browserName", "Chrome");
try{
driver = new RemoteWebDriver( new URL(hubUrl),ds);
} catch (malformedURLException e){
e.printSTackTrace();
}
driver.get(url);
}
public void pageTitleValidation(){
String title = driver.getTitle();
System.out.println("page title :" +title);
}
public static void main(String[] args)
{
test1 obj = new test1();
obj.setupGrid();
obj.pageTitleValidation();
}
}
Шаг 3
Теперь для Step 3, я открыл свой IDE Eclipse и используя WebDriver, я написал свой тест-кейс. Мы посмотрим на новый Maven-проект среди других. Кроме того, нам также потребуется вставить водитель Chrome, который будет использоваться в конкретной папке здесь. Версия сервера Selenium, которая используется, должна быть удалена из этого проекта путем шагов, которые я проведу сейчас. Я могу перейти к имени моего проекта, щелкнуть правой кнопкой мыши и выбрать “Построить путь”. From here, I can move down to configure the build path, and on the right-hand side, I’ll see a possibility called add external jaws. From here I can add the Selenium server that I’m using.
Щелкните применить и закройте окно и после этого, пойдем к шагу 4.
Шаг 4
Теперь для шага 4, я вернулся в папку, которую я создал в шаге 2. Here, I’ll be using the command prompt.
Это делает его очень простым для нахождения папки и простым процессом. Так как это только одна машина и один браузер, я буду использовать Selenium Edge Sandaland mode.
Сейчас сервер запускается. Он добавляет требуемые зависимости одну за другой, и процесс завершается. Ему был дан определенный адрес, куда мы можем перейти. Теперь я скопирую этот адрес и вернусь к шагу 3. Здесь, в URL центра, я вставлю этот адрес, и когда моя программа будет готова, я вернусь в файл и запущу это как приложение.
Хорошо, так как я вижу, что приложение запущено, я перехожу в свой браузер Chrome и вставляю адрес, который мне дал командный ряд. Это мой адрес Selenium, и я вижу, что сессии запущены. В обзоре я могу видеть, что полные стереотипы для Chrome были созданы. А в сессиях мой стандартный тестовый случай активен. Вы также можете видеть веб-страницу.
Роли сетки
Сетка состоит из шести различных компонентов, которые дают вам возможность разворачивать свои тестовые сценарии автоматизации на несколько способов. Вы можете запустить их отдельно, а также группировать как центр или запускать на одной машине.
1. Стandalone
Интегрируя все компоненты сетки, standalone
работает как единое целое. Запуская режим standalone
, вы легко развернете полностью функциональную сеть с помощью одной команды внутри одного процесса. Следует отметить, что standalone
ограничен работой на одной машине.
java -jar selenium-server-<version>.jar standalone
2. Центр и узел
Центр и узел являются наиболее популярными и широко используемыми компонентами. Они позволяют пользователям объединять различные машины с различными операционными системами и версиями браузеров. Благодаря этому у вас будет один вход для запуска тестов webdriver в многих средах.
узел
состоит из 路由器
, диспетчера
, веб-журнала
и очереди сессий
:
java -jar selenium-server-<version>.jar hub
узел
обнаруживает несколько доступных драйверов из системного пути.
java -jar selenium-server-<version>.jar node
Резюме
В конце концов, для обобщения, Selenium Grid позволяет параллельное выполнение множества тестов в различных браузерах и на различных платформах с использованием архитектуры центр-узел. Центр служит как центральный репозитарий для хранения тестов, в то время как узлы выполняют роль экземпляров Selenium, выполняя эти тесты по запросу центра. Установка Selenium Grid включает в себя скачивание jar-файла Selenium Server, того же файла, который используется для запуска тестов Selenium RC. Чтобы проверить, работает ли центр, можно с помощью консоли командных запросов или веб-браузера. Чтобы выполнять сценарии теста на Grid, необходимо использовать объекты DesiredCapabilities
и RemoteWebDriver
. DesiredCapabilities
настраивает тип браузера и операционную систему для автоматизации, а RemoteWebDriver
определяет узел или машину для выполнения наших тестов.