stringtranslate.com

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

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

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

История

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

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

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

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

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

Компоненты

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

Селен IDE

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

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

Клиентский API Selenium

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

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

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

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 — это первый и главный автоматизированный инструмент веб-тестирования, который позволяет пользователям использовать предпочитаемый ими язык программирования. [15] [16]

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

Селен ВебДрайвер

В основе Selenium лежит 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, включая ограничения безопасности. [17]

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

Примеры

Ниже приведены некоторые из самых простых инструкций, которые можно сделать:

Питон
из  selenium  import  webdriver из  selenium.webdriver.common.by  import  By from  selenium.webdriver.common.keys  import  Keys from  selenium.webdriver.support.ui  import  WebDriverWait from  selenium.webdriver.support.expected_conditions  import  Presence_of_element_located#Для этого примера требуется Selenium WebDriver 3.13 или новее с  webdriver . Firefox ()  в качестве  драйвера :  wait  =  WebDriverWait ( driver ,  10 )  драйвер . получить ( «https://google.com/ncr» )  драйвер . find_element ( по ИМЯ , " q" ) . send_keys ( «сыр» + Ключи . ВОЗВРАТ ) first_result = ожидание . до ( presence_of_element_located (( By . CSS_SELECTOR , "h3" ))) print ( first_result . get_attribute ( "textContent" ))        
Джава
импортировать org.openqa.selenium.By ; импортировать org.openqa.selenium.Keys ; импортировать org.openqa.selenium.WebDriver ; импортировать org.openqa.selenium.WebElement ; импортировать org.openqa.selenium.firefox.FirefoxDriver ; импортировать org.openqa.selenium.support.ui.WebDriverWait ; импортировать статический org.openqa.selenium.support.ui.ExpectedConditions.presenceOfElementLocated ; импортировать java.time.Duration ;        общественный класс HelloSelenium {    public static void main ( String [] args ) { драйвер WebDriver = новый FirefoxDriver (); WebDriverWait wait = новый WebDriverWait ( драйвер , Duration . ofSeconds ( 10 )); попробуйте { драйвер . получить ( «https://google.com/ncr» ); Водитель . findElement ( По .имя ( "q" )) . sendKeys ( "сыр" + Keys . ENTER ); WebElement firstResult = подождите . до ( presenceOfElementLocated ( By . cssSelector ( "h3" ))); Система . вне . println ( firstResult.getAttribute ( "textContent" ) ) ; } Наконец { драйвер . покидать (); } } }                                 
С#
используя систему ; использование OpenQA.Selenium ; использование OpenQA.Selenium.Firefox ; использование OpenQA.Selenium.Support.UI ;    класс HelloSelenium { static void Main () { using ( драйвер IWebDriver = новый FirefoxDriver ()) { WebDriverWait wait = новый WebDriverWait ( драйвер , TimeSpan . FromSeconds ( 10 )); Водитель . Навигация (). GoToUrl ( "https://www.google.com/ncr" ); Водитель . НайтиЭлемент ( По.Имя ( "q" ) ) . SendKeys ( " сыр" + Keys.Enter ) ; ждать . До ( webDriver => webDriver . FindElement ( By . CssSelector ( «h3» )). Отображается ); IWebElement firstResult = драйвер . FindElement ( By.CssSelector ( "h3" ) ) ; Консоль . WriteLine ( firstResult . GetAttribute ( "textContent" )); } } }                               

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

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

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

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

Рекомендации

  1. ^ «Выпуск Selenium 4.16» . 6 декабря 2023 г.
  2. ^ «Загрузки». Селен .
  3. ^ «Проект автоматизации браузера Selenium» . селен.dev . 16 марта 2020 г. Проверено 1 ноября 2021 г.
  4. ^ Абдуллаев, О.А.; Ибрагимова, Л.В. (2020). «Обзор программного обеспечения для тестирования: программное обеспечение Selenium» (PDF) . Винницкий национальный технический университет . УДК 004.457.
  5. ^ «О селене».
  6. ^ «История селена». www.селениум.dev . Проверено 11 августа 2021 г.
  7. ^ «Проект Селен». thenewcircle.com . НовыйКруг . Проверено 29 июня 2014 г.
  8. ^ Криль, Пол (6 апреля 2011 г.). «Набор тестов веб-приложений Selenium с открытым исходным кодом для поддержки iPhone и Android». Инфомир . Архивировано из оригинала 5 мая 2011 года . Проверено 9 мая 2012 г. Selenium был назван так потому, что Хаггинс, недовольный инструментами тестирования, представленными на рынке, искал название, которое позиционировало бы продукт как альтернативу коммерческому программному обеспечению для тестирования Mercury Interactive QuickTest Professional. По словам Хаггинса, название «Селен» было выбрано потому, что минеральные добавки селена служат лекарством от отравления ртутью.
  9. Мойзуддин, Хаджа (7 июня 2018 г.). «Компоненты инструмента автоматизации Selenium». dzone.com . Зона DevOps . Проверено 10 июля 2019 г.
  10. ^ «Он вернулся! Selenium IDE возрождается с Дэйвом Хэффнером» . testpodcast.com . 24 декабря 2018 г.
  11. Дэйв, Тур де (6 августа 2018 г.). «Selenium IDE мертва, да здравствует Selenium IDE!». Официальный блог Selenium IDE . Получено 27 ноября 2019 г. - через seleniumhq.wordpress.com.
  12. Колантонио, Джо (27 ноября 2018 г.). «Потрясающее возвращение Selenium IDE». testguild.com . Проверено 27 ноября 2019 г.
  13. Сарджент, Эл (19 марта 2019 г.). «Список новых функций Selenium IDE». applitools.com . Проверено 18 октября 2021 г.
  14. ^ "Пульт дистанционного управления Selenium" . seleniumhq.org . Проверено 13 ноября 2019 г.
  15. ^ «Selenium 1 (Selenium RC) :: Документация для Selenium» . www.селениум.dev . Проверено 20 декабря 2020 г.
  16. ^ sparkdatabox_author (16 октября 2019 г.). «Селен | Spark Databox» . Проверено 20 декабря 2020 г. {{cite web}}: |last=имеет общее имя ( справка )
  17. ^ «Архитектура приложений с открытым исходным кодом: Selenium WebDriver». aosabook.org . Проверено 7 февраля 2016 г.
  18. Смит, Майкл (5 июня 2018 г.). «WebDriver переходит на рекомендации W3C». Блог W3C . Проверено 10 сентября 2018 г.
  19. ^ «Загрузки». селен.dev . Проверено 29 сентября 2021 г.
  20. ^ "Селеновая сетка". Проект автоматизации браузера Selenium . Проверено 9 сентября 2020 г.

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