Руководство по Selenium WebDriver: Начало работы с автоматизацией тестирования [Учебное пособие]

Когда речь заходит об автоматизации тестирования веб-сайтов, существует ряд фреймворков, таких как Selenium, Cypress testing, Playwright, Puppeteer и т.д., которые входят в список «предпочтительных» фреймворков. Выбор фреймворка для автоматизации тестирования зависит от ряда параметров, таких как тип, сложность, масштаб, а также от опыта работы с фреймворком, имеющегося в команде. Однако нет ничего удивительного в том, что Selenium по-прежнему является наиболее предпочтительным фреймворком среди разработчиков и специалистов по контролю качества.

Для начала, Selenium WebDriver является ядром системы автоматизации Selenium. В этом учебнике по Selenium WebDriver я глубоко погружаюсь в неотъемлемые аспекты Selenium WebDriver, а также затрагиваю архитектуру Selenium WebDriver.

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

Что такое Selenium?

Selenium — это один из наиболее широко используемых фреймворков автоматизации тестирования пользовательского интерфейса (Web UI) с открытым исходным кодом. Он позволяет тестировщикам выполнять тесты на различных браузерах, платформах и языках.

За время моей карьеры в QA мне посчастливилось опробовать и использовать несколько фреймворков для автоматизации тестирования. До сих пор ни один из них не приблизился к системе автоматизации Selenium по функциям, поддерживаемым языкам, интеграции CI/CD и многим другим. Тем не менее, согласно опросу, Selenium automation testing по-прежнему является наиболее предпочтительным способом реализации автоматизированного веб-тестирования.

Selenium превосходит другие фреймворки автоматизации тестирования, поскольку обеспечивает совместимость с такими популярными языками программирования, как Python, Java, JavaScript, C# и Ruby. Поэтому обращение к отдельным учебникам по языку Selenium, например, к учебнику Selenium Python, может стать хорошей отправной точкой для получения максимальной отдачи от Selenium и Python для автоматизации веб-тестирования.

Ниже показана эволюция системы автоматизации Selenium:

Помимо Selenium WebDriver, Selenium IDE и Selenium Grid являются другими ключевыми компонентами системы Selenium. Selenium 4 является последней версией Selenium на момент написания этого блога. Если вам интересно узнать о Selenium 4, вы можете углубиться в наш блог о том, что нового в Selenium 4.

Кроме того, вы можете следить за YouTube-каналом LambdaTest и быть в курсе последних уроков по Selenium-тестированию, Cypress-тестированию, CI/CD и многим другим.

Особенности фреймворка автоматизации Selenium

Теперь, когда мы рассмотрели основы того, что такое Selenium, позвольте мне рассказать вам о некоторых основных возможностях системы автоматизации Selenium в этом разделе учебника по Selenium WebDriver:

  • Selenium поддерживает такие популярные языки программирования, как Java, Python, C#, JavaScript, Ruby, PHP и Perl; посредством использования специальных драйверов для браузеров.

  • Selenium также является платформонезависимой системой автоматизации тестирования. Например, выполнение тестов Selenium на macOS очень похоже на выполнение тестов Selenium на Windows OS.

  • Тесты Selenium можно выполнять в различных браузерах (например, Firefox, Chrome, IE, Safari и т. д.) и в различных операционных системах (например, Windows 10, macOS и т. д.). Запуск Selenium-тестов в IE по-прежнему актуален даже в 2021 году ? .

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

  • Интеграция Selenium с фреймворками автоматизации тестирования, поддерживающими Python, Java, JavaScript и т.д., помогает максимально использовать возможности Selenium и соответствующего фреймворка автоматизации тестирования. Например, фреймворк TestNG для Selenium помогает получить максимальную отдачу от Selenium и фреймворков TestNG.

  • Selenium и Continuous Integration позволяет QA-инженерам запускать тесты автоматизации Selenium как часть конвейера CI/CD. Например, Selenium Continuous Integration with Jenkins помогает запускать тесты автоматизации Selenium как часть конвейера Jenkins.

  • Интеграция Selenium с платформами отчетности, такими как Extent, Allure и т.д., помогает генерировать и управлять отчетами о тестировании. Кроме того, инструменты отчетности в Selenium предоставляют информацию об общем поведении тестов, что помогает улучшить качество тестов.

  • Выполнение тестов Selenium в контейнерах Docker сокращает время выполнения тестов и минимизирует различия, которые могут возникнуть между различными тестовыми средами (например, staging, production и т.д.).

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

Каковы компоненты Selenium?

Как уже говорилось, Selenium — это фреймворк (т.е. это не одно программное обеспечение, а набор, состоящий из различных компонентов).

Selenium состоит из следующих компонентов:

  1. Selenium IDE

  2. Selenium WebDriver

  3. Selenium Grid

Прежде чем приступить к практической работе с Selenium WebDriver, важно подробно разобраться в этих основных компонентах.

Selenium IDE

Selenium IDE — это, по сути, инструмент записи/запуска, который доступен в виде плагина для браузеров Mozilla Firefox и Google Chrome. Для работы с IDE не требуется знание языков программирования.

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

Selenium IDE в Selenium 4 — это больше, чем инструмент воспроизведения и записи, возможности которого можно использовать для получения максимальной отдачи от автоматизированного тестирования Selenium.

Selenium WebDriver

Selenium WebDriver является улучшенной версией Selenium RC и преодолевает ограничения, с которыми сталкивался Selenium RC. Он управляет браузером посредством прямой связи. Он имеет более быстрое время выполнения по сравнению с IDE и RC.

Selenium RC и WebDriver были объединены в единое целое под названием Selenium WebDriver 2.0. Со временем он был усовершенствован для расширения возможностей и функциональности. В Selenium 3 протокол JSON Wire был основным способом связи между тестовым кодом и веб-браузером.

В Selenium 4 протокол JSON Wire заменен на протокол W3C, что означает, что кодирование и декодирование тестовых запросов больше не требуется в протоколе WebDriver W3C. Поэтому, как QA-инженеры, мы можем ожидать меньшего количества нестабильных тестов с протоколом W3C WebDriver в Selenium 4.

Selenium Grid

Selenium Grid позволяет пользователям выполнять параллельное выполнение тестов. Он используется вместе с Selenium RC для запуска параллельных тестов на разных браузерах и машинах.

Пользователи могут выполнять одновременные тесты в нескольких средах, тем самым экономя много времени и ускоряя выход на рынок.

Selenium Grid основан на концепции Hub-Node. До Selenium 3 банки Hub и Node нужно было запускать отдельно. В Selenium 4 все необходимые зависимости доступны в одном Jar-файле. Поэтому, чтобы использовать Selenium Grid на Selenium 4, вам не нужно запускать Hub и Node отдельно.

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

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

В этом руководстве по Selenium WebDriver мы рассмотрели основы Selenium и его компоненты. Теперь давайте попробуем разобраться в Selenium WebDriver более подробно.

Как упоминалось ранее, Selenium WebDriver — это улучшенная версия Selenium RC. Это веб-фреймворк, который помогает нам в выполнении кроссбраузерных тестов. Он также позволяет нам выбирать язык программирования для создания тестовых сценариев.

Архитектура Selenium WebDriver в Selenium 3

Архитектура Selenium WebDriver в Selenium 3 состоит из четырех основных компонентов:

  • Клиентские библиотеки Selenium/языковые привязки

  • Протокол передачи данных JSON

  • Драйверы браузеров

  • Реальные браузеры

Клиентские библиотеки Selenium

Для поддержки нескольких языков разработчики Selenium создали языковые привязки. Например, если вы пишете тесты на Java, вы можете использовать привязку к Java. Клиентские библиотеки можно загрузить с официального сайта Selenium.

Протокол передачи данных JSON

JSON — это сокращенная форма JavaScript Object Notation. Он обеспечивает передачу данных между клиентом и сервером. Он обеспечивает поддержку таких структур данных, как объекты и массивы, что облегчает чтение и запись данных.

Он действует как REST (Representational State Transfer) API для передачи информации между HTTP-серверами.

Драйверы браузеров

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

Кроме того, каждый язык автоматизации имеет соответствующий драйвер браузера. При запуске теста автоматизации Selenium выполняется следующая серия действий:

  • Каждая команда Selenium генерирует соответствующий HTTP-запрос, который отправляется драйверу браузера.

  • Этот запрос направляется через HTTP-сервер.

  • Теперь HTTP-сервер управляет выполнением команды в браузере.

  • Браузер отправляет статус обратно на HTTP-сервер, который пересылает его сценарию автоматизации.

Некоторые из драйверов браузера — ChromeDriver, GeckoDriver, MicrosoftEdge driver и т.д.

Браузеры

Браузеры являются конечной точкой выполнения тестов. Selenium поддерживает все основные браузеры, такие как Firefox, Chrome, Safari, Edge и т.д.

Архитектура Selenium WebDriver в Selenium 4

Одно из основных различий между Selenium 3 и Selenium 4 заключается в том, что Selenium WebDriver в Selenium 4 соответствует стандарту W3C. Как видно из архитектуры WebDriver в Selenium 3, кодирование и декодирование запросов API приходилось выполнять из-за использования протокола JSON Wire.

С W3C WebDriver в Selenium 4 тесты могут напрямую взаимодействовать с веб-браузером. Поскольку Selenium WebDriver и веб-браузеры находятся на одной странице (в том, что касается протокола W3C), вы можете ожидать меньше флейкинга и больше последовательности в том, что касается автоматизированного тестирования Selenium.

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

Вот краткий обзор сертификации Selenium Advanced от LambdaTest:

Преимущества Selenium WebDriver

Теперь, когда мы знаем обо всей архитектуре Selenium WebDriver, давайте рассмотрим его преимущества в этой части учебника по Selenium WebDriver.

Вот основные преимущества Selenium WebDriver:

  • Поддерживает множество операционных систем, таких как Windows, Mac, Linux и т.д.

  • Он поддерживает множество языков программирования, таких как Java, Python, JavaScript, PHP, C# и т.д.

  • Он совместим со всеми современными браузерами, такими как Chrome, Firefox, Opera, Safari и Microsoft Edge. Он также совместим с почти устаревшим браузером Internet Explorer (IE).

  • Он обеспечивает более быстрое завершение тестовых сценариев по сравнению с другими инструментами.

Ограничения Selenium WebDriver

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

Вот некоторые из потенциальных недостатков Selenium WebDriver:

  • Он не поддерживает автоматизацию приложений на базе Windows.

  • В нем нет встроенного механизма отчетности.

  • В Selenium нет интеграции инструментов тестирования для управления тестами.

  • Из коробки Selenium WebDriver не поддерживает параллельное тестирование, что делает очень сложным выполнение больших и сложных тестовых наборов. Если вы хотите выполнять параллельное тестирование с помощью Selenium, то вам необходимо использовать Selenium Grid.

Однако вы можете устранить вышеупомянутые недостатки, используя облачную Selenium Grid для автоматизации тестирования, где тесты Selenium могут безопасно выполняться в масштабе, да еще и в быстром темпе! Платформы кроссбраузерного тестирования, такие как LambdaTest, предоставляют безопасную, масштабируемую и надежную онлайн Selenium Grid, которая позволяет параллельно запускать Selenium тесты на 2,000+ браузерах и платформах.

В последних разделах этого руководства по Selenium WebDriver мы подробно рассмотрим, как запускать Selenium-тесты параллельно на облачной Selenium Grid от LambdaTest.

Примечание: Array.prototype.findIndex — Метод findIndex() возвращает индекс 1-го элемента в массиве, который соответствует предоставленной функции тестирования.

Selenium WebDriver: Установка и настройка

В этом разделе учебника по Selenium WebDriver мы рассмотрим установку Selenium WebDriver для операционной системы Windows с использованием Java в качестве языка программирования.

Для демонстрации я использовал IDE Eclipse. Однако вы можете использовать IDE по своему усмотрению. Теперь мы собираемся испачкать руки в коде ? .

Начнем с предварительных условий:

  1. Установите Java

  2. Установите Eclipse IDE

  3. Установите Selenium WebDriver

Установите Java

Шаг 1: Перейдите на официальный сайт Java Downloads и скачайте JDK для Windows x64 Installer.

Шаг 2: Примите лицензионное соглашение в следующем всплывающем окне и нажмите на кнопку Download.

Шаг 3: После завершения загрузки перейдите в папку Downloads и дважды щелкните на исполняемом файле, чтобы Java была установлена в вашей системе.

Настройка переменных среды

Шаг 1: Откройте настройки компьютера и выберите «Дополнительные параметры системы» в диалоговом окне «Система».

Шаг 2: В следующем окне нажмите на кнопку «Переменные среды».

Шаг 3: Теперь в разделе Системные переменные дважды щелкните на Путь.

Шаг 4: Добавьте полный путь к директории установки Java в соответствии с расположением вашей системы и нажмите OK.

Шаг 5: Вот и все. Теперь вы можете видеть, что самый верхний путь на скриншоте — это путь Java в моей системе.

Чтобы проверить, что Java установлена и переменные установлены правильно, откройте Командную строку и введите: java -version. Вы увидите версию Java, установленную в вашей системе.

Вот и все, первое необходимое условие выполнено. Следующий шаг — установка Eclipse.

Установка Eclipse

Шаг 1: Скачайте Eclipse IDE for Java Developers с официального сайта Eclipse. Я бы посоветовал загрузить последний стабильный релиз. Выберите загрузку в зависимости от архитектуры вашей системы. Я использую eclipse Mars, но вы можете выбрать любую из последних версий.

Шаг 2: После завершения загрузки распакуйте zip-файл в удобное для вас место.

Шаг 3: Теперь откройте извлеченную папку и дважды щелкните на eclipse.exe.

Откроется Eclipse, и вы закончите со вторым необходимым условием этого руководства по Selenium WebDriver.

Установите Selenium WebDriver

Последний шаг в этом учебнике по Selenium WebDriver — установка автономного сервера Selenium, что показано в следующих шагах:

Шаг 1: Загрузите Selenium Client & WebDriver Language Bindings с сайта Selenium. Вы можете загрузить клиентские библиотеки, соответствующие вашему языковому предпочтению. В этом блоге мы будем работать с Java Client Bindings.

Шаг 2: После загрузки файла распакуйте его в выбранную вами папку, откуда вы сможете использовать его в дальнейшем.

Шаг 3: Теперь вы можете увидеть соответствующий извлеченный файл в выбранной папке назначения.

Шаг 4: Открыв папку, вы увидите файлы jar, папку libs (которая содержит еще несколько файлов jar) и файл CHANGELOG.

Шаг 5: Далее необходимо загрузить драйверы браузера, которые помогут вам установить браузер. Ниже приведены ссылки для загрузки драйверов для некоторых основных браузеров:

  • GeckoDriver(Firefox)

  • InternetExplorerDriver

  • ChromeDriver

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

Шаг 6: Далее просто извлеките скачанный драйвер и сохраните его в том месте, где вы сможете его использовать.

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

Примечание: Array.prototype.includes — проверяет, включает ли массив заданное значение, возвращая булево значение (в отличие от indexOf).

Как настроить Eclipse для Selenium WebDriver

Следующие шаги этого руководства по Selenium WebDriver помогут вам настроить и установить IDE Eclipse:

Шаг 1: Запустите файл eclipse.exe, сохраненный в шагах по установке Eclipse.

Шаг 2: Выберите рабочее пространство вручную, или пусть оно будет расположено по умолчанию, и нажмите OK.

Шаг 3: Создайте новый проект, перейдя по ссылке File > New > Java Project.

Шаг 4: Нажмите на Next и дайте имя проекту. Нажмите на Finish.

Шаг 5: Теперь, когда проект создан, щелкните правой кнопкой мыши на проекте и выберите New > Package.

Шаг 6: Введите имя пакета в диалоговом окне New Java Package и нажмите на Finish.

Шаг 7: Теперь вам нужно создать класс в пакете. Для этого щелкните правой кнопкой мыши на имени пакета, выберите New > Class.

Шаг 8: В диалоговом окне New Java Class введите имя класса, выберите заглушку метода viz, public static void main(String[] args) и нажмите на Finish.

Ваш проводник будет выглядеть как показано ниже:

Шаг 9: Теперь, когда мы создали набросок нашего тестового проекта, нам нужно импортировать библиотеки, которые мы установили для учебника Selenium WebDriver в разделе выше.

Для начала щелкните правой кнопкой мыши на проекте и перейдите к Build Path > Configure Build Path.

Шаг 10: Нажмите на Add External JARs и перейдите к месту, где были сохранены загруженные JARs.

Шаг 11: Выберите два JAR, установленных в папке Selenium Client, и JAR в папке libs.

Шаг 12: После добавления вы увидите jar-файлы в папке Libraries:

Шаг 13: Нажмите на Apply и затем OK. Теперь в проводнике пакетов вы увидите, что библиотеки Referenced Libraries заполнены.

Теперь мы настроили Selenium WebDriver в нашем проекте Eclipse и можем написать наш первый тестовый сценарий.

Запуск сценария автоматизации тестирования с помощью Selenium WebDriver

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

Постановка задачи

Чтобы продемонстрировать использование Selenium WebDriver, я выполню следующий сценарий:

  1. Запустите браузер Chrome.

  2. Откройте страницу регистрации LambdaTest.

  3. Нажмите на кнопку Sign In.

  4. Закройте веб-браузер.

Реализация

package LambdaTest;

import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;

@Listeners({util.Listener.class})
class FirstTestScriptUsingWebDriver {
   public static WebDriver driver = null;
   @BeforeTest
   public void setUp() throws Exception {
       WebDriverManager.chromedriver().setup();
       driver=new ChromeDriver();
   }
   @Test
   public void firstTestCase() {
       try {
           System.out.println("Logging into Lambda Test Sign Up Page");
           driver.get("https://accounts.lambdatest.com/register");
           WebElement pageHeader= driver.findElement(By.xpath("//a[text()='Sign In']"));
           pageHeader.click();
           System.out.println("Clicked on the Sign In Button.");
       } catch (Exception e) {
       }
   }
   @AfterTest
   public void closeBrowser() {
       driver.close();
       System.out.println("The driver has been closed.");
   }
}
Вход в полноэкранный режим Выход из полноэкранного режима

Вам понадобится приведенный ниже pom.xml для импорта необходимых зависимостей.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>LambdaTest</artifactId>
  <version>1.0-SNAPSHOT</version>
  <dependencies>
      <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-api</artifactId>
          <version>4.0.0-alpha-7</version>
      </dependency>
      <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-remote-driver</artifactId>
          <version>4.0.0-alpha-7</version>
      </dependency>
      <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-chrome-driver</artifactId>
          <version>4.0.0-alpha-7</version>
      </dependency>
      <dependency>
          <groupId>org.testng</groupId>
          <artifactId>testng</artifactId>
          <version>6.14.3</version>
      </dependency>
      <dependency>
          <groupId>io.github.bonigarcia</groupId>
          <artifactId>webdrivermanager</artifactId>
          <version>4.4.3</version>
      </dependency>
  </dependencies>

  <properties>
      <maven.compiler.source>8</maven.compiler.source>
      <maven.compiler.target>8</maven.compiler.target>
  </properties>
</project>
Войти в полноэкранный режим Выйти из полноэкранного режима

А приведенный ниже файл testng.xml понадобится для запуска тестового примера.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite  name="FirstTestScriptUsingWebDriverSuite">
   <test name="FirstTestScriptUsingWebDriver" >
       <classes>
           <class name="LambdaTest.FirstTestScriptUsingWebDriver" >
           </class>
       </classes>
   </test>
</suite>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite  name="FirstTestScriptUsingWebDriverSuite">
   <test name="FirstTestScriptUsingWebDriver" >
       <classes>
           <class name="LambdaTest.FirstTestScriptUsingWebDriver" >
           </class>
       </classes>
   </test>
</suite>
Войти в полноэкранный режим Выйти из полноэкранного режима

Краткое описание кода

Импорт зависимостей: Здесь мы импортировали все необходимые классы для использования WebDriver, ChromeDriver и соответствующих аннотаций в TestNG.

@BeforeTest: Обычно для запуска любого тестового сценария Selenium требуется драйвер браузера, и чтобы использовать его, необходимо явно задать путь к исполняемому файлу драйвера браузера. После этого необходимо инстанцировать экземпляр драйвера и приступить к выполнению тестового сценария.

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

Здесь WebDriverManager.chromedriver.setup() проверяет наличие последней версии указанного двоичного файла веб-драйвера. Если двоичные файлы отсутствуют, он загружает их и позже инстанцирует экземпляр Selenium WebDriver с ChromeDriver. Разве это не просто? ?

Приведенные ниже два класса помогут вам в использовании WebDriver и ChromeDriver.

@ Test(firstTestCase): В тестовом примере я открыл страницу регистрации LambdaTest в браузере Chrome с помощью оператора driver.get(). Метод findElement в Selenium используется для нахождения веб-элемента SignIn.

Здесь я использовал XPath в Selenium для поиска кнопки «Войти». Чтобы исследовать XPath любого элемента, вы можете просто щелкнуть на нем правой кнопкой мыши и выбрать Inspect. Вы сможете обнаружить локатор на вкладке Элементы. Метод click в Selenium используется для нажатия на кнопку Sign In.

@AfterTest: В методе AfterTest закройте браузер с помощью метода driver.close().

Выполнение теста

После запуска файла testng.xml вы увидите следующие результаты.

Автоматизированное тестирование браузера с помощью облачной Selenium Grid

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

Однако реалистичный сценарий — это когда один тестовый пример (или несколько тестовых примеров) должен выполняться в различных комбинациях браузеров и ОС. Именно здесь на помощь приходит Selenium Grid. Selenium Grid облегчает наши проблемы, связанные с настройкой, а также помогает нам выполнять тесты в масштабе локальной (или облачной) сети.

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

Такие инструменты тестирования Selenium, как LambdaTest, предлагают облачную Selenium Grid, которая позволяет запускать параллельные тесты на 3000+ различных браузерах и операционных системах. Все, что вам нужно сделать, это инстанцировать удаленный Selenium WebDriver вместо локального Selenium WebDriver.

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

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

Постановка задачи

В приведенном ниже примере я запускаю тот же тестовый пример на комбинации Chrome (последняя версия) + Windows 10.

  1. Запустите браузер Chrome на Windows 10

  2. Откройте страницу регистрации LambdaTest.

  3. Нажмите на кнопку Sign In.

  4. Закройте веб-браузер.

Реализация

package LambdaTest;

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;

import java.net.MalformedURLException;
import java.net.URL;

@Listeners({util.Listener.class})
class FirstTestScriptUsingSeleniumGrid {

  public String username = "YOUR USERNAME";
  public String accesskey = "YOUR ACCESSKEY";
  public static RemoteWebDriver driver = null;
  public String gridURL = "@hub.lambdatest.com/wd/hub";

  @BeforeTest
  public void setUp() throws Exception {
      DesiredCapabilities capabilities = new DesiredCapabilities();
      capabilities.setCapability("browserName", "chrome");
      capabilities.setCapability("version", "94.0");
      capabilities.setCapability("platform", "win10"); // If this cap isn't specified, it will just get the any available one
      capabilities.setCapability("build", "FirstTestScript");
      capabilities.setCapability("name", "FirstTestScriptSample");
      try {
          driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + gridURL), capabilities);
      } catch (MalformedURLException e) {
          System.out.println("Invalid grid URL");
      } catch (Exception e) {
          System.out.println(e.getMessage());
      }
  }

  @Test
  public void firstTestCase() {
      try {
          System.out.println("Logging into Lambda Test Sign Up Page");
          driver.get("https://accounts.lambdatest.com/register");
          WebElement pageHeader= driver.findElement(By.xpath("//a[text()='Sign In']"));
          pageHeader.click();
          System.out.println("Clicked on the Sign In Button.");
      } catch (Exception e) {

      }
   }

  @AfterTest
  public void closeBrowser() {
      driver.close();
      System.out.println("The driver has been closed.");
  }
}
Вход в полноэкранный режим Выход из полноэкранного режима

Краткое описание кода

Глобальные переменные: Поскольку тесты должны выполняться на LambdaTest cloud Selenium Grid, мы будем использовать показанные ниже переменные.

Здесь вы можете заполнить значения для вашего соответствующего имени пользователя и ключа доступа, которые можно получить, войдя в раздел профиля LambdaTest. Однако gridURL останется прежним.

@BeforeTest(Метод настройки): В Selenium класс RemoteWebDriver реализует интерфейс WebDriver для выполнения тестовых сценариев через сервер RemoteWebDriver на удаленной машине.

Импортированный ниже класс поможет вам в использовании класса RemoteWebDriver.

Здесь я использовал генератор желаемых возможностей LambdaTest и задал необходимые возможности: название браузера, версию, платформу и т.д.

Реализация под аннотациями @ Test и @AfterTest остается неизменной, так как изменилась только конечная точка выполнения — с загрузки Selenium Grid на облачную Selenium Grid.

Выполнение

Войдите в LambdaTest Automation Dashboard, чтобы проверить статус выполнения теста на LambdaTest.

Примечание: asm.js — Подмножество asm.js JavaScript обеспечивает низкоуровневую, переносимую производительность с семантикой языка высокого уровня. Asm.js предназначен для шага компиляции из языков типа C/C++ в оптимизированный JavaScript.

Что нового в Selenium WebDriver 4?

До сих пор в этом учебнике по Selenium WebDriver я рассказывал об основных аспектах Selenium WebDriver и его архитектуре в Selenium 3 и Selenium 4. Однако, как инженера по контролю качества, бесчисленные возможности Selenium 4 меня очень заинтересовали!

Selenium
@seleniumhq

? Релиз ?

?? Selenium 4.0 здесь! ??

Читайте обо всем в нашей статье в блоге:
selenium.dev/blog/2021/anno…

Мы надеемся, что вам понравится Selenium 4, и нам не терпится увидеть, что вы с ним сделаете!
#selenium4

14:10 PM — 13 Oct 2021

Помимо обновленной архитектуры Selenium WebDriver, вот некоторые другие важные улучшения в Selenium 4:

Стандартизация W3C

Значительным изменением в Selenium 4 является полное соответствие API WebDriver требованиям W3C. Это устраняет необходимость кодирования и декодирования запросов API по протоколу JSON, отвечающему за связь между браузерами и тестовыми скриптами.

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

Улучшенная Selenium Grid

Ранние версии Selenium Grid были сложны в настройке и обслуживании. Однако новая Selenium Grid проста в настройке, поскольку нет необходимости поддерживать Hub и Node отдельно.

Grid даже имеет улучшенный графический интерфейс, а поддержка Docker помогает разработчикам (и тестировщикам) использовать его на виртуальных машинах (VM). Grid также может быть развернута на Kubernetes. Запуск Selenium-тестов в Docker теперь стал легкой прогулкой с настройкой Selenium Grid в Selenium 4!

Относительные локаторы в Selenium 4

Относительные локаторы (или локаторы Friendly) помогают определить местоположение Web-элементов относительно конкретного Web-элемента. Например, нужный элемент может находиться рядом, слева, справа, выше или ниже указанного элемента.

Относительные локаторы в Selenium 4 помогут сэкономить много времени при поиске сложных Web-элементов. Above, Below, To Right Of, To Left Of и Near — вот некоторые из относительных локаторов, которые можно использовать для сокращения количества строк кода при поиске Web-элементов.

Улучшенное управление браузером и вкладками

Selenium 4 предоставляет новый API newWindow, который позволяет создавать новое окно (или вкладку) и переключаться на него без создания нового объекта WebDriver.

Открытие нового окна в Selenium 4

driver.get("https://www.google.com/");
// Opens a new window and switches to new window
driver.switchTo().newWindow(WindowType.WINDOW);
// Opens LambdaTest homepage in the newly opened window
driver.navigate().to("https://www.lambdatest.com/");
Вход в полноэкранный режим Выход из полноэкранного режима

Открытие новой вкладки в Selenium 4

driver.get("https://www.google.com/");
// Opens a new window and switches to new window
driver.switchTo().newWindow(WindowType.TAB);
// Opens LambdaTest homepage in the newly opened tab
driver.navigate().to("https://www.lambdatest.com/");
Вход в полноэкранный режим Выход из полноэкранного режима

Утрата желаемых возможностей

В Selenium 4 Desired Capabilities заменяются на Options, и нам необходимо создать объект Options, чтобы использовать класс Driver.

Нижеперечисленные объекты Options будут использоваться в Selenium 4 для определения возможностей, специфичных для браузера.

  • Chrome — ChromeOptions

  • Firefox — FirefoxOptions

  • Safari — SafariOptions

  • Internet Explorer (IE) — InternetExplorerOptions

  • Microsoft Edge — EdgeOptions

Chrome DevTools Protocol (CDP)

Chrome DevTools Protocol — это новое дополнение в Selenium 4. Новая функция предоставляет протокол отладки Chrome и Microsoft Edge для отладки, имитации плохих сетевых условий и эмуляции геолокации для автоматизации тестирования.

Тестирование геолокации с помощью Selenium помогает имитировать геолокацию браузера для целей тестирования веб-браузера. Эта функция в Selenium 4 может быть использована для тестирования функциональных возможностей веб-сайта путем имитации различных географических местоположений.

Заключение

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

Счастливого тестирования! ?

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *