В настоящее время люди используют инструмент 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;  

  • Selenium Grid; 

  • Selenium Server и т.д.  

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.

Комментарии (15)


  1. MaryRabinovich
    16.02.2022 21:01

    Вопрос: имеет ли смысл осваивать такие штуки, есть на основных своих языках уже юзаешь специализированные тестовые фреймворки?

    То есть, это решения для того, чтобы код не писать (писать псевдокод, писать его как можно меньше), или тут есть ещё много плюшек, добавочно?

    И кстати да, а верное ли впечатление, что тут кода меньше? И что это не вполне код? Чисто внешне подозрительно похоже на jquery.

    ЗЫ ни разу не юзала ни селениум, ни селенид,
    недавно только наткнулась тут на комментарий чей-то, мол "было у них в вакансии про селениум, я сказал - юзаю селенид, и меня не взяли, поскольку эйчар не знал, что они в целом родственные". И тут статья с такими же терминами в названии - невозможно было пройти мимо.


    1. asolntsev
      17.02.2022 00:01
      +1

      имеет ли смысл осваивать такие штуки, есть на основных своих языках уже юзаешь специализированные тестовые фреймворки?

      Вопрос не понял, но ответ зависит от ваших потребностей. Кому-то имеет, кому-то не имеет. И кстати, что такое "специализированные тестовые фреймворки"?

      Нет, это решение точно не для того, чтобы не писать код. Это решения как раз для того, чтобы писать код.

      Да, в селениде есть плюшки. Да, в селениде меньше кода. Да, это реальный код на Java. Да, он похож на jquery.


      1. MaryRabinovich
        17.02.2022 14:24

        "Специализированные тестовые" в моём случае PhpUnit для PHP и Jest для Vue.js.

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


        1. asolntsev
          17.02.2022 14:39

          А, ну так вы говорите про юнит-тесты, видимо. Такие инструменты, как PhpUnit, Jest, JUnit, TestNG позволяют писать и запускать тесты, но сами по себе не дают доступа к браузер.

          Для полноценных End-to-End тестов нужен ещё инструмент для оперирования браузером типа Selenium/Selenide.


  1. Boeing_777
    16.02.2022 21:35
    +2

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


    1. MaryRabinovich
      16.02.2022 22:36

      А можно тогда я вас тоже спрошу (если в статье только маркетинг): стоит ли программисту, уже использующему специализированные языковые тестовые фреймворки вот эти вот два инструмента осваивать? Какие-то плюшки будут от этого, программисту?
      (из статьи реально не поняла)


    1. zaelcovsky
      18.02.2022 13:33

      по всем признакам это перевод с английского


  1. cheaTTer
    17.02.2022 05:28

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

    Наверное имелось в виду, что Html Elements от компании Yandex ?


    1. asolntsev
      17.02.2022 08:19

      Похоже на то. :)

      Да вообще это был ужасный текст в оригинале, в нём полно подобных ошибок. Зачем его взялись переводить?..


      1. DarkenRaven
        17.02.2022 11:05

        К сожалению по части тестирования у них очень сомнительная экспертиза - большинство статей на хабре кричит об этом.


    1. tundrawolf_kiba
      17.02.2022 23:45

      там у них уже вместо HtmlElements — Atlas — штука интересная, но к сожалению — прекратившая развитие.


  1. 3vi1_0n3
    19.02.2022 09:58

    Selenide — это враппер вокруг Selenium. Каким фигом их сравнивают — непонятно. Это примерно как «JavaScript или React.js — что из этого лучше?»


    1. asolntsev
      19.02.2022 11:39

      Сравнение как раз вполне логичное.

      Перед людьми, которые начинают писать тесты на Java, стоит вполне конкретный выбор: писать на чистом Selenium или Selenide? Вот статья и помогает принять решение.

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


      1. 3vi1_0n3
        19.02.2022 13:14

        Нет, я немного не про это.

        Согласен, Selenium используется для управления браузером, но Selenide просто добавляет собственные удобные (иногда IMHO спорно) вещи.

        Я про то, что в статье сравнивают как бы противопоставляя Selenide Selenium'у («Selenide vs Selenium»), там говорится следующее: «Selenium, так же как и Selenide, являются фреймворками автоматизации тестирования, и вы можете обнаружить некоторые сходства в их работе». Selenide — это производный от Selenium продукт (как его автор вы это знаете, я просто для связанности это пишу, чтобы более точно выразиться), который его использует внутри себя, попутно пытаясь решать какие-то сопутствующие проблемы чистого Selenium (в некоторых случаях не решает, к сожалению), построен на его базе и, собственно, дает к нему доступ через getWebDriver(). Было бы удивительно, если бы там не было сходств.

        С сопоставлением того, как какие-то вещи можно делать и там, и там, я согласен, не согласен с противопоставлением одного другому, как если бы JavaScript противопоставляли React.

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

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

        Статья называется «подробное сравнение», я там насчитал аж 9 строчек кода. Черновик W3C на WebDriver содержит список действий по сути, которые могут быть выполнены при помощи WebDriver. Было бы отлично, если бы что-то из этих действий было отображено в статье, и потом показано, в чем может быть проблема, и как она решается в Selenide, или пример, в чем он лучше. Это не настолько маленький проект, чтобы подробное сравнение включало всего 9 строчек кода, 4 из которых это пример как что-то кликнуть. А где остальное-то?


        1. asolntsev
          19.02.2022 13:27

          А, ну это да, сама по себе статья отвратительная. Мне казалось, это и так очевидно. :)

          А какого именно "контроля над браузером" не хватило?