Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

История [ править ]

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

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

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

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

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

Компоненты [ править ]

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

Selenium IDE [ править ]

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

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

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

Помимо официального проекта Selenium IDE, активно поддерживаются два альтернативных расширения браузера Selenium IDE: [14] 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 [ править ]

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 должен работать непрерывно. [15]

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

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

С выпуском 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, включая ограничения безопасности. [18]

На практике это означает, что у 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 года последовала рекомендация. [19] Selenium WebDriver (Selenium 2.0) полностью реализован и поддерживается на Python , Ruby , Java и C # .

Selenium Grid [ править ]

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

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

См. Также [ править ]

  • Приемочное тестирование
  • Capybara (программное обеспечение)
  • Дано-Когда-Тогда
  • Список инструментов веб-тестирования
  • MediaWiki Selenium
  • Регрессионное тестирование
  • Робот Фреймворк

Ссылки [ править ]

  1. ^ "Релизы - SeleniumHQ / selenium" . Проверено 28 сентября 2018 г. - через GitHub .
  2. ^ "Загрузки" . Селен .
  3. ^ «История селена» . www.selenium.dev .
  4. ^ "Проект Селен" . NewCircle . Проверено 29 июня 2014 года .
  5. ^ Криль, Пол (6 апреля 2011). «Набор для тестирования веб-приложений Selenium с открытым исходным кодом для поддержки iPhone и Android» . InfoWorld . Проверено 9 мая 2012 года . Selenium был назван так потому, что Хаггинс, недовольный имеющимися на рынке инструментами для тестирования, искал имя, которое позиционировало бы продукт как альтернативу коммерческому программному обеспечению для тестирования Mercury Interactive QuickTest Professional. Название «Селен» было выбрано, потому что минеральные добавки селеном служат лекарством от отравления ртутью, пояснил Хаггинс.
  6. ^ Moizuddin, Khaja (7 июня 2018). «Компоненты Selenium Automation Tool» . dzone.com . Зона DevOps . Проверено 10 июля 2019 года .
  7. ^ Эванс, Джим. «Пользователи Selenium - Selenium IDE кажется устаревшей и лишенной функций» . groups.google.com . Проверено 7 февраля, 2016 .
  8. ^ «Он вернулся! Selenium IDE Reborn с Дэйвом Хеффнером» . testpodcast.com .
  9. ^ "Selenium IDE мертва, да здравствует Selenium IDE!" . Официальный блог Selenium IDE . 6 августа 2018 . Проверено 27 ноября 2019 г. - через seleniumhq.wordpress.com.
  10. ^ Colantonio, Джо (27 ноября 2018). «Потрясающее возвращение Selenium IDE» . testguild.com . Проверено 27 ноября 2019 года .
  11. ^ «Список новых возможностей Selenium IDE» . applitools.com .
  12. ^ «Firefox 55 и Selenium IDE» . Официальный блог Selenium . 9 августа 2017 года . Проверено 21 августа 2017 года .
  13. ^ "Сайт загрузки Selenium IDE" . seleniumhq.org . Проверено 10 мая 2018 года .
  14. ^ «Selenium IDE восстает как феникс из пепла» . Блог о технологиях автоматизации . Проверено 8 апреля 2019 года .
  15. ^ "Selenium Remote-Control" . seleniumhq.org . Проверено 13 ноября 2019 года .
  16. ^ "Selenium 1 (Selenium RC) :: Документация для Selenium" . www.selenium.dev . Проверено 20 декабря 2020 года .
  17. ^ sparkdatabox_author. «Селен | Spark Databox» . Проверено 20 декабря 2020 года .
  18. ^ «Архитектура приложений с открытым исходным кодом: Selenium WebDriver» . aosabook.org . Проверено 7 февраля, 2016 .
  19. ^ Смит, Майкл. «Двигатели WebDriver в соответствии с рекомендациями W3C» . Блог W3C . Проверено 10 сентября 2018 года .
  20. ^ "Селеновая сетка" . Проект автоматизации браузера Selenium . Проверено 9 сентября 2020 года .

Внешние ссылки [ править ]

  • Официальный веб-сайт