[Перевод] Selenide vs Selenium — подробное сравнение

03bad0f0300edbe9aca402c20cf07e87.png

В настоящее время люди используют инструмент Selenide вместо Selenium Web Driver. Selenide — это фреймворк, разработанный для автоматизации тестирования с помощью Selenium Web Driver. Его API достаточно хорош для взаимодействия с Selenium Web Driver. 

В Selenium имеется отличная библиотека для работы с веб-браузером, то есть он является инструментом автоматизации веб-браузера. Selenium Web Driver поддерживает кросс-браузерную автоматизацию, мобильный браузер и автоматизацию нативных приложений. С его помощью мы можем открывать браузер и копировать (имитировать) действия пользователя. Обладает низкоуровневыми API. 

Если вы только начали свою карьеру в области автоматизации QA, то можете быть не знакомы с Selenium Test Automation должным образом. Однако, для того чтобы преуспеть в сфере услуг по автоматизации тестирования, сначала необходимо добиться успеха в Selenium-тестировании. Это объясняется тем, что современный рынок требует более быстрого тестирования веб-приложений и их релиза в течение нескольких недель.  

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

Если же вам трудно найти различия между Selenium и «Selenide», мы обещаем помочь вам разобраться в этом в течение нескольких минут. 

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

Что такое Selenium?   

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

Кроме того, Selenium Testing Framework поставляется с предметно-ориентированным языком (Selenese), позволяющим писать тесты на нескольких языках программирования: Groovy, C#, Java, PHP, Perl, Python, Scala и Ruby.  

Преимущество таких тестов заключается в том, что их можно запускать в современных веб-браузерах, и это позволяет проводить тестирование на различных операционных системах, таких как Windows, macOS и Linux.   

В Selenium есть линейка программных продуктов с полностью открытым исходным кодом:    

Selenium IDE: Это небольшой плагин, который поддерживает Mozilla Firefox для записи и воспроизведения определенных действий пользователя. Он отличается от Selenium Server или Selenium Grid, но не забывайте, что Selenium IDE работает только с локальными веб-браузерами.  

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

Чтобы создать сессию, необходимо зайти на ПК с Grid. После этого он определит, сколько времени требуется вашей машине для загрузки. Исходя из этого, он дает вам необходимые команды.  

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

Selenium Server: Это программа, которая помогает управлять необходимыми веб-браузерами в соответствии с оригинальным набором драйверов.  

Кроме того, Selenium Server должен находиться на таком же компьютере, и для начала работы на нем должен быть установлен веб-браузер. С помощью Selenium Server можно легко управлять веб-браузерами на определенном локальном ПК.   

Что такое Selenide?    

Selenide — это автоматизированная система тестирования программного обеспечения, используемая для написания программных кодов, которая помогает создавать и отправлять HTTP-запросы на Server/Grid. Кроме того, одной из основных целей использования Selenide является создание скриптов, с помощью которых становится проще тестировать работу веб-продуктов.  

Более того, он помогает обнаружить необходимые веб-объекты, проверяет выполнение событий и фокусируется на работе с пользовательским интерфейсом (UI). Selenium, так же как и Selenide, являются фреймворками автоматизации тестирования, и вы можете обнаружить некоторые сходства в их работе.  

Однако Selenide разработан другой проектной группой, так что очевидно, что данное ПО имеет другие возможности по сравнению с Selenium. Оно максимально разработано для создания скриптов, которые могут тестировать работу веб-продуктов: обнаружение необходимых веб-объектов, проверка выполнения событий, работа с UI и так далее. 

Selenide в сравнении с Selenium 

# Selenium 

Web Driver — лучший инструмент, но это не инструмент тестирования. Selenium Web Driver включает в себя несколько библиотек для тестирования, но они не решают следующие проблемы:  

  • UI-тесты. 

  • Нестабильность тестов, вызванная: Динамическим контентом, JavaScript, Ajax, таймаутами (Timeouts) и т.д. 

1. UI-тесты — В идеале мы пишем для наших приложений модульные, функциональные, интеграционные и т.д. тесты. Для веб-приложения мы пишем скрипты, которые открывают страницу в новом браузере и запускают ее. 

2. Ajax и Timeouts — Тестовые сценарии, написанные сегодня, могут быть использованы завтра, на следующей неделе и в следующем месяце, но иногда они не работают по вине сервера CI. Порой JavaScript работает медленно, некоторые Ajax-запросы требуют много времени, а какие-то процессы выполняются одновременно с нашими тестовыми сценариями, занимая CPU сервера. 

Чтобы решить эту проблему, мы используем методы sleep или wait_until в наших тестах. Но нежелательно использовать их регулярно. В идеале, когда мы пишем тесты, наше основное внимание должно быть сосредоточено на бизнес-логике, не беспокоясь о таймаутах, ожидании (waiting), сне (sleeping), жизненном цикле WebDriver и т.д. 

# Selenide 

Selenide — это инструмент, используемый для автоматизированного тестирования и созданный для решения проблем Ajax/Timeouts. Как известно, выдающиеся продукты не нуждаются в документации, и Selenide — один из них. Вся работа с Selenide состоит из трех действий:  

  • Open the page (Открыть страницу);

  • $(find element).doAction() ;

  • $(find element).checkCondition() .

Selenide так же прост, как: $(selector).do() .

Selenide IDE показывает все возможные варианты, когда мы нажали точку после написания $("selector") .

Как работает Selenide-фреймворк?  

В Selenide каждый метод должен ждать несколько секунд. Поэтому нет необходимости использовать в коде команды sleeps и waits. Для примера напишем следующую строчку кода. 

$("#menu").shouldHave(text("Hello")); 

Здесь Selenide проверяет, содержит ли элемент «Hello». Если нет, то следует динамически обновить его и немного подождать, пока это произойдет. Для большинства веб-приложений таймаут по умолчанию составляет 4 секунды. 

Selenide обеспечивает стабильность тестов, решая проблемы Ajax и Timeout. Он предоставляет перечисленные ниже API:  

  • Поддержка Ajax;

  • Интеллектуальное ожидание;

  • Удобные методы;

  • Автоматические скриншоты;

  • Транспарентный веб-драйвер. 

Дифференциация Selenide и Selenium на примере:  

В Selenium Web Driver мы пишем:  

By username = By.name("username"); 
driver.findElement(username).click(); 

В случае с Selenide мы можем просто написать:

By username = By.byName("username"); 
$(username).click(); 

Selenide имеет встроенный механизм WebDriverWait, поэтому ожидание Ajax-вызова не составляет труда. Это обеспечивает стабильное тестирование приложения с Ajax-вызовами. 

Инструменты, аналогичные Selenide:  

Инструмент Selenium WebDriver не является инструментом тестирования, он используется для управления браузером. Поэтому на основе Selenium было создано несколько инструментов, таких как FluentLenium, Fluent-selenium, HTMLElements, Thucydides, Yandex, Watir-webdriver. Selenide является одним из них и создан для написания лаконичных, выразительных, чистых кодов и стабильных UI-тестов на Java. 

Что лучше — Selenide или Selenium?

В наше время многие используют инструмент Selenide вместо Selenium Web Driver, потому что Selenide специально разработан для автоматизации тестирования с помощью Selenium WebDriver. И еще одна причина использовать Selenide вместо Selenium заключается в том, что он поставляется с хорошими API, которые можно подключить к Selenium WebDriver.   

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

Что касается совместимости, Selenium WebDriver обеспечивает поддержку кросс-браузерной автоматизации, автоматизации нативных приложений, автоматизации мобильных браузеров и многого другого. Более того, с помощью Selenium WebDriver можно легко открыть браузер и скопировать (имитировать) действия пользователя. 

Всех заинтересованных приглашаем на открытый урок в OTUS «Allure Report». Хорошие автотесты используются разными участниками процесса разработки: менеджерами, аналитиками, тестировщиками и разработчиками. На этом занятии мы познакомимся с фреймворком Allure Report, который позволяет строить отчеты по результатам прохождения автотестов, понятные всем участникам процесса. Урок проведет Артем Ерошенко — инженер по тестированию компании Qameta Software.

© Habrahabr.ru