Selenium

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

Selenium
Скриншот программы Selenium
Тип тестирование программного обеспечения
Написана на Java
Операционные системы Microsoft Windows, GNU/Linux, Apple Mac OS
Последняя версия 4.5.0 (28 сентября 2022; 21 месяц назад (2022-09-28))
Репозиторий github.com/SeleniumHQ/
github.com/SeleniumHQ/se…
Лицензия Apache License 2.0
Сайт selenium.dev

История

править

В июне 2004 года[1] разработчик Jason Huggins написал на языке JavaScript библиотеку, названную «JavaScriptTestRunner» (ныне известную как «Selenium Core») и предназначенную для запуска тестов в браузере. Тогда Huggins работал в офисе фирмы ThoughtWorks, расположенном в городе Чикаго, а созданная библиотека использовалась для тестирования сайта, написанного на языке Python с использованием системы управления содержанием (CMS) Plone. Huggins помогали Paul Gross и Jie Tina Wang — сотрудники фирмы ThoughtWorks. Позднее к разработке присоединились другие разработчики и тестировщики компании.

Название «Selenium» («selenium» в переводе с английского языка — селен) стало использоваться после того, как в одном из своих электронных писем (email) Huggins пошутил о конкурирующем проекте, имеющем название «Mercury Interactive QuickTest Professional» («mercury» в переводе с английского языка — ртуть), написав о том, что можно вылечиться от отравления ртутью, принимая с пищей селен[2].

Paul Hammant (сотрудник фирмы ThoughtWorks) предложил открыть исходный код библиотеки «Selenium Core», предоставить возможность писать сценарии на любом языке программирования и запускать сценарии удалённо. Для реализации последнего требовалось обойти ограничения, реализуемые браузером для выполнения правила ограничения домена (same origin policy). Для обхода правила Aslak Hellesoy и Mike Melia (сотрудник фирмы ThoughtWorks) написали page rewriter. Paul Hammant написал программы на языке Java, реализующие сервер и клиент. Aslak Hellesoy и Obie Fernandez переписали клиент на языке Ruby в виде библиотеки.

Сотрудники фирмы ThoughtWorks, офисы которой располагались по всему миру, стали использовать «Selenium» в коммерческих проектах. Разработку продолжали Mike Williams, Darrell Deboer и Darren Cotterill.

Разработчики фирмы «BEA Systems, Inc.», Dan Fabulich и Nelson Sproul переписали код сервера, для реализации HTTP-proxy использовали код из проекта Jetty (HTTP-сервер на Java). Новый сервер стал известен как «Selenium Remote Control» или «Selenium RC». Работу над «Selenium RC» продолжили Pat Lightbody, Dan Fabulich и Nelson Sproul.

В декабре 2004 года исходный код проекта «Selenium» был открыт.

В 2005 году на встрече разработчиков Dan Fabulich и Nelson Sproul (с помощью Pat Lightbody) предложили принять набор патчей, превращающих «Selenium RC» в продукт, известный сегодня как «Selenium 1.0». На той же встрече управление проектом было возложено на комитет, а разработчики Jason Huggins и Paul Hammant стали представлять фирму ThoughtWorks в созданном комитете.

Летом 2006 года разработкой библиотеки «Selenium Core» занималась команда разработчиков, состоявшая из Wang Peng Chao, Huang Liang, Xiong Jie и других, под руководством Mike Williams в офисе фирмы ThoughWorks, расположенном в Китае. Команда реализовала возможности, доступные в «Selenium 1.0».

В 2007 году Jason Huggins нанялся работать в фирму Google, стал членом (тогда секретной) команды поддержки «Selenium», совместно с другими разработчиками (например, с Jennifer Bevan) продолжил работу над «Selenium RC». Представители фирмы Google впервые объявили об использовании «Selenium» на конференции «Google Test Automation Conference» (GTAC-2007)[3], проходившей в Нью-Йорке 23-24 августа 2007 года. Позднее Jennifer Bevan получила возможность вносить изменения в код проекта «Selenium».

Haw-bin Chai из Чикаго создал патчи, добавляющие функциональность XPath и реализующие расширение, названное «UI Element», после чего в 2007 году был приглашён в команду разработчиков Selenium.

Simon Stewart, работавший тогда в фирме ThoughtWorks, разработал инструмент, названный WebDriver. WebDriver запускал браузеры и работал с ними, при этом не был ограничен возможностями, предоставляемыми JavaScript, поэтому по возможностям превосходил «Selenium Core». Но для поддержки каждого браузера требовалось написание кода. В 2007 году Simon Stewart представил свою разработку на конференции GTAC-2007. В 2009 году разработчики встречались на конференции GTAC-2009 и приняли решение о слиянии кодовых баз проектов Selenium и WebDriver. В 2007—2012 годах Simon Stewart работал в фирме Google, а затем — в фирме Facebook, при этом часть своего рабочего времени тратил на то, чтобы сделать WebDriver совместимым с «Selenium RC». Новый продукт был назван «Selenium WebDriver» или «Selenium 2.0»[4].

В 2008 году Philippe Hanrigou, работавший тогда в фирме ThoughtWorks, создал проект «Selenium Grid». «Selenium Grid» — проект с открытым исходным кодом, предоставляющий программы, предназначенные для запуска сценариев «Selenium RC» на нескольких компьютерах одновременно. Разные сценарии запускались на нескольких компьютерах для уменьшения времени их выполнения. Возможности «Selenium Grid» совпадали с возможностями аналогичного, но закрытого и внутреннего, продукта фирмы Google. Pat Lightbody владел сайтом, названным «Hosted QA» и позволяющим получать скриншоты веб-страниц, продал сайт фирме «Gomez, Inc».

Shinya Kasatani из Японии создал расширение для браузера Firefox, получившее название «Selenium IDE» и позволяющее записывать тесты, сохранять их и воспроизводить. Расширение не было ограничено правилом ограничения домена (same origin policy).

Общие сведения

править

Selenium WebDriver — это в первую очередь набор библиотек для различных языков программирования. Эти библиотеки используются для отправки HTTP запросов драйверу (отсюда и название WebDriver), с помощью протокола JsonWireProtocol[5], в которых указано действие, которое должен совершить браузер в рамках текущей сессии. Примерами таких команд могут быть команды нахождения элементов по локатору, переход по ссылкам, парсинг текста страницы/элемента, нажатие кнопок или переход по ссылкам на странице веб-сайта. Существуют как официальные привязки библиотеки к популярным языкам программирования, так и любительские. К примеру, библиотека для поддержки языка PHP не является официальной и разрабатывается Facebook[6].

Проектом Selenium и сообществом поддерживается работа с браузерами Microsoft Internet Explorer, Google Chrome, Mozilla Suite и Mozilla Firefox под управлением операционных систем Microsoft Windows, Linux и Apple Macintosh.

Selenium, начиная с версии 3.х начал требовать для работы с браузером Firefox отдельный драйвер - GeckoDriver, ранее называвшийся Marionette[7]

В рамках проекта Selenium выпускается инструмент «Selenium IDE» — расширение к браузерам Firefox и Chrome, представляющее собой библиотеку Selenium с графическим интерфейсом (GUI), построенным с использованием XUL. Расширение позволяет записывать, сохранять и воспроизводить сценарии тестирования web-страниц. Сценарии сохраняются в формате HTML в виде таблицы.

Поддерживаемые платформы

править

Список браузеров, поддерживаемых разработчиками проекта Selenium и/или сообществом[8]:

Браузер Операционная система Разработчик
Chromium/Google Chrome Windows/macOS/Linux Google
Firefox Windows/macOS/Linux Mozilla
Microsoft Edge Windows 10 Microsoft
Internet Explorer Windows Selenium Project
Safari macOS El Capitan и более новые Apple
Opera Windows/macOS/Linux Opera

Также возможно использование с браузерами без графического интерфейса[англ.] — HtmlUnit[англ.] и PhantomJS[англ.], хотя последнее не рекомендуется, так как этот продукт не обновляется и не поддерживается своим разработчиком с 2017 года и соответствующая функциональность с этого времени присутствует в браузере Google Chrome[8].

См. также

править

Примечания

править
  1. Selenium History (англ.). selenium.dev. Дата обращения: 19 декабря 2019. Архивировано 19 декабря 2019 года.
  2. Krill, Paul. Open source Selenium web app test suite to support iPhone and Android (англ.) // InfoWorld : magazine. — 2011. — 6 April. Архивировано 26 декабря 2013 года.
  3. 2nd Annual Google Test Automation Conference (7 марта 2007). Дата обращения: 1 сентября 2016. Архивировано 13 мая 2016 года.
  4. The Selenium Project. NewCircle. Дата обращения: 29 июня 2014. Архивировано 12 августа 2014 года.
  5. selenium: A browser automation framework and ecosystem, 2017-12-31, Архивировано 19 февраля 2020, Дата обращения: 19 июня 2017 – via GitHub Источник. Дата обращения: 19 июня 2017. Архивировано 19 февраля 2020 года.
  6. php-webdriver: A php client for webdriver. — 2017-06-17. Архивировано 17 мая 2017 года.
  7. Marionette (англ.). Mozilla Developer Network. Дата обращения: 19 июня 2017. Архивировано 12 сентября 2017 года.
  8. 1 2 The Selenium Browser Automation Project - Driver requirements (англ.). Дата обращения: 8 февраля 2021. Архивировано 4 марта 2021 года.

Ссылки

править