Селен (программное обеспечение) - Selenium (software)

Селен
Selenium logo.svg
Стабильный выпуск
3.141.59 / 19 ноября 2018 г . ; 2 года назад ( 2018-11-19 )
Репозиторий
Написано в Selenium Server: Java ; Selenium WebDriver (работает без Selenium Server), официальная поддержка: JavaScript ( Node.js ), Python , Ruby , Java или C #
Операционная система Кроссплатформенность
Тип Фреймворк для тестирования программного обеспечения для веб-приложений
Лицензия Лицензия Apache 2.0
Веб-сайт селен .dev Отредактируйте это в Викиданных

Selenium - это среда автоматизированного тестирования с открытым исходным кодом для веб-приложений . Selenium предоставляет инструмент воспроизведения для создания функциональных тестов без необходимости изучения языка сценариев тестирования (Selenium IDE). Он также предоставляет тестовый предметно-ориентированный язык (Selenese) для написания тестов на ряде популярных языков программирования, включая JavaScript ( Node.js ), C # , Groovy , Java , Perl , PHP , Python , Ruby и Scala . Затем тесты могут выполняться в большинстве современных веб-браузеров . Selenium работает в Windows , Linux и macOS . Это программное обеспечение с открытым исходным кодом, выпущенное под лицензией Apache License 2.0 .

История

Изначально Selenium был разработан Джейсоном Хаггинсом в 2004 году как внутренний инструмент ThoughtWorks . Позже к Хаггинсу присоединились другие программисты и тестировщики в ThoughtWorks, прежде чем к команде присоединился Пол Хаммант и руководил разработкой второго режима работы, который позже стал «Selenium Remote Control» (RC). В том году инструмент был открыт с исходным кодом.

В 2005 году Дэн Фабулич и Нельсон Спроул (с помощью Пэта Лайтбоди) сделали предложение принять серию патчей, которые превратят Selenium-RC в то, чем он стал наиболее известен. На той же встрече управление Selenium как проектом будет продолжено в рамках комитета, а Хаггинс и Хаммант будут представителями ThoughtWorks.

В 2007 году Хаггинс присоединился к Google. Вместе с другими, такими как Дженнифер Беван, он продолжил разработку и стабилизацию Selenium RC. В то же время Саймон Стюарт из ThoughtWorks разработал превосходный инструмент автоматизации браузера под названием WebDriver. В 2009 году после встречи разработчиков на конференции Google Test Automation Conference было решено объединить два проекта и назвать новый проект Selenium WebDriver или Selenium 2.0.

В 2008 году Филипп Ханригу (тогда работавший в ThoughtWorks) создал «Selenium Grid», который представляет собой концентратор, позволяющий запускать несколько тестов Selenium одновременно на любом количестве локальных или удаленных систем, тем самым минимизируя время выполнения теста. Grid предлагал в качестве открытого исходного кода возможности, аналогичные внутреннему / частному облаку Google для Selenium RC. Пэт Лайтбоди уже создал частное облако для HostedQA, которое затем продал Gomez, Inc.

Название Selenium происходит от шутки, которую Хаггинс написал в электронном письме, высмеивая конкурента по имени Меркьюри , говоря, что вы можете вылечить отравление ртутью, принимая добавки селена. Остальные, получившие письмо, взяли это имя и побежали с ним.

Компоненты

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

Selenium IDE

Selenium IDE - это полная интегрированная среда разработки (IDE) для тестов Selenium. Он реализован как надстройка Firefox и как расширение Chrome . Он позволяет записывать, редактировать и отлаживать функциональные тесты. Ранее он был известен как Selenium Recorder. Selenium-IDE была первоначально создана Шинья Касатани и передана проекту Selenium в 2006 году. Ранее Selenium IDE практически не обслуживалась. Selenium IDE начала активно поддерживаться в 2018 году.

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

Версия 2.x Selenium IDE для Firefox перестала работать после обновления Firefox 55 и была заменена на Selenium IDE 3.x.

Помимо официального проекта Selenium IDE, активно поддерживаются два альтернативных расширения браузера Selenium IDE: Kantu ( лицензия GPL с открытым исходным кодом ) и Katalon Recorder (с открытым исходным кодом ).

API клиента Selenium

В качестве альтернативы написанию тестов на Selenese тесты также могут быть написаны на различных языках программирования. Затем эти тесты связываются с Selenium, вызывая методы в Selenium Client API. В настоящее время Selenium предоставляет клиентские API для Java , C # , Ruby , JavaScript , R и Python .

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

Селен пульт дистанционного управления

Selenium Remote Control (RC) - это сервер, написанный на Java , который принимает команды для браузера через HTTP . RC позволяет писать автоматические тесты для веб-приложения на любом языке программирования, что позволяет лучше интегрировать Selenium в существующие среды модульного тестирования. Чтобы упростить написание тестов, проект Selenium в настоящее время предоставляет клиентские драйверы для PHP , Python , Ruby , .NET , Perl и Java . Драйвер Java также можно использовать с JavaScript (через движок Rhino ). Для запуска тестового примера html необходим экземпляр selenium RC server - это означает, что порт должен быть разным для каждого параллельного запуска. Однако для тестового примера Java / PHP только один экземпляр Selenium RC должен работать непрерывно.

Selenium Remote Control был рефакторингом Driven Selenium или Selenium B, разработанным Полом Хаммантом, при участии Джейсона в качестве соавтора Selenium. Исходная версия напрямую запускала процесс для рассматриваемого браузера с тестового языка Java, .NET, Python или Ruby. Проводной протокол (в свое время называвшийся «Selenese») был повторно реализован в каждом языковом порте. После рефакторинга, выполненного Дэном Фабуличем и Нельсоном Спрулом (с помощью Пэта Лайтбоди), между сценарием управляющего теста и браузером возник промежуточный процесс-демон. Среди преимуществ - возможность управлять удаленными браузерами и уменьшенная потребность в переносе каждой строки кода на все более растущий набор языков. Selenium Remote Control полностью заменил строку кода Driven Selenium в 2006 году. Шаблон браузера для «Driven» / «B» и «RC» был ответом / запросом, который впоследствии стал известен как Comet .

Selenium RC долгое время служил флагманским фреймворком для тестирования всего проекта selenium. И что немаловажно, Selenium RC - это первый и самый распространенный инструмент автоматизированного веб-тестирования, который позволил пользователям адаптировать предпочтительный язык программирования.

С выпуском Selenium 2 Selenium RC был официально признан устаревшим и заменен Selenium WebDriver.

Selenium WebDriver

Selenium WebDriver является преемником Selenium RC. Selenium WebDriver принимает команды (отправленные в Selenese или через клиентский API) и отправляет их в браузер. Это реализуется через специфичный для браузера драйвер браузера, который отправляет команды браузеру и получает результаты. Большинство драйверов браузера фактически запускают и получают доступ к приложению браузера (например, Firefox , Google Chrome , Internet Explorer , Safari или Microsoft Edge ); существует также драйвер браузера HtmlUnit , который имитирует браузер с помощью безголового браузера HtmlUnit.

В отличие от Selenium 1, где для запуска тестов был необходим сервер Selenium, Selenium WebDriver не требует специального сервера для выполнения тестов. Вместо этого WebDriver напрямую запускает экземпляр браузера и управляет им. Однако Selenium Grid можно использовать с WebDriver для выполнения тестов в удаленных системах (см. Ниже). Там, где это возможно, WebDriver для управления браузером использует встроенные функции уровня операционной системы, а не команды JavaScript на основе браузера. Это позволяет обойти проблемы с тонкими различиями между собственными командами и командами JavaScript, включая ограничения безопасности.

На практике это означает, что у Selenium 2.0 API значительно меньше вызовов, чем у Selenium 1.0 API. В то время как Selenium 1.0 пытался предоставить богатый интерфейс для множества различных операций браузера, Selenium 2.0 стремится предоставить базовый набор строительных блоков, из которых разработчики могут создавать свой собственный предметно-ориентированный язык (DSL). Один такой DSL уже существует: проект Watir на языке Ruby имеет богатую историю хорошего дизайна. Watir-webdriver реализует Watir API как оболочку для Selenium WebDriver в Ruby. Watir-webdriver создается полностью автоматически на основе спецификации WebDriver и спецификации HTML.

В начале 2012 года Саймон Стюарт (изобретатель WebDriver), который тогда работал в Google, и Дэвид Бернс из Mozilla вели переговоры с W3C, чтобы сделать WebDriver стандартом Интернета. В июле 2012 года был выпущен рабочий проект, а в июне 2018 года последовала рекомендация. Selenium WebDriver (Selenium 2.0) полностью реализован и поддерживается в JavaScript ( Node.js ), Python , Ruby , Java и C # . По состоянию на 2021 год Selenium 4 является кандидатом на выпуск.

Селеновая сетка

Selenium Grid - это сервер, который позволяет тестам использовать экземпляры веб-браузера, запущенные на удаленных машинах. В Selenium Grid один сервер выступает в роли центрального концентратора. Тесты связываются с хабом для получения доступа к экземплярам браузера. Хаб имеет список серверов, которые предоставляют доступ к экземплярам браузера (узлы WebDriver), и позволяет тестам использовать эти экземпляры. Selenium Grid позволяет запускать тесты параллельно на нескольких машинах и централизованно управлять различными версиями браузеров и их конфигурациями (а не в каждом отдельном тесте).

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

Смотрите также

использованная литература

внешние ссылки