Selenium

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Selenium
Скриншот программы Selenium
Тип тестирование программного обеспечения
Написана на Java
Операционные системы Microsoft Windows, GNU/Linux, Apple Mac OS
Последняя версия 3.141.59 (14 ноября 2018 года)
Репозиторий github.com/SeleniumHQ/
github.com/SeleniumHQ/se…
Лицензия Apache License 2.0
Сайт selenium.dev

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

В июне 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, представляющее собой библиотеку Selenium с графическим интерфейсом (GUI), построенным с использованием XUL. Расширение позволяет записывать, сохранять и воспроизводить сценарии тестирования web-страниц. Сценарии сохраняются в формате HTML в виде таблицы.

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

[править | править код]

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

Браузер Операционная система Разработчик
Chromium/Google Chrome Windows/macOS/Linux Google
Firefox Windows/macOS/Linux Mozilla
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.
  2. Krill, Paul. Open source Selenium web app test suite to support iPhone and Android (англ.) // InfoWorld : magazine. — 2011. — 6 April.
  3. 2nd Annual Google Test Automation Conference (7 марта 2007).
  4. The Selenium Project. NewCircle. Дата обращения: 29 июня 2014.
  5. selenium: A browser automation framework and ecosystem, 2017-12-31 — GitHub
  6. php-webdriver: A php client for webdriver. — 2017-06-17.
  7. Marionette (англ.). Mozilla Developer Network. Дата обращения: 19 июня 2017.
  8. 1 2 The Selenium Browser Automation Project - Driver requirements (англ.). Дата обращения: 8 февраля 2021.