Selenium

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Selenium
Selenium IDE.png
Тип

тестирование программного обеспечения

Написана на

Java

Операционная система

Microsoft Windows, GNU/Linux, Apple Mac OS

Последняя версия

2.53.0 (15 марта 2016 года)

Лицензия

Apache License 2.0

Сайт

docs.seleniumhq.org

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

История[править | править вики-текст]

В июне 2004 года[1] разработчик Jason Huggins написал на языке JavaScript библиотеку, названную «JavaScriptTestRunner» (ныне известную как «Selenium Core») и предназначенную для запуска тестов в браузере. Тогда Huggins работал в офисе фирмы ThoughtWorks, расположенном в городе Чикаго, а созданная библиотека использовалась для тестирования сайта, написанного на языке Python с использованием системы управления содержанием (CMS) Plone. Huggins помогали Paul Gross и Jie Tina Wang — сотрудники фирмы ThoughtWorks. Позднее к разработке присоединились другие разработчики и тестеры фирмы 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[1], в которых указано действие, которое должен совершить браузер в рамках текущей сессии. Примерами таких команд могут быть команды нахождения элементов по локатору, переход по ссылкам, парсинг текста страницы/элемента, нажатие кнопок или переход по ссылкам на странице веб-сайта. Существуют как официальные привязки библиотеки к популярным языкам программирования, так и любительские. К примеру, библиотека для поддержки языка PHP не является официальной, и разрабатывается Facebook[5].

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

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

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

Поддерживаемые платформы[править | править вики-текст]

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

  • Microsoft Windows:
    • Firefox 2, 3, 3.x , 4 — 41;
    • Internet Explorer 6, 7, 8 , 9, 10;
    • Safari 2, 3, 4;
    • Opera 8, 9, 10, 11, 12;
    • Google Chrome 12.0.712.0+;
  • и другие.

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

  1. Selenium History (англ.). seleniumhq.org. Проверено 1 сентября 2016.
  2. Krill, Paul (2011-04-06). «Open source Selenium web app test suite to support iPhone and Android». Проверено 2012-05-09. “Selenium was so named because Huggins, dissatisfied with testing tools on the market, was seeking a name that would position the product as an alternative to Mercury Interactive QuickTest Professional commercial testing software. The name, Selenium, was selected because selenium mineral supplements serve as a cure for mercury poisoning, Huggins explained.”
  3. 2nd Annual Google Test Automation Conference (7 марта 2007).
  4. The Selenium Project. NewCircle. Проверено 29 июня 2014.
  5. php-webdriver: A php client for webdriver. — 2017-06-17.
  6. Marionette (en-US). Mozilla Developer Network. Проверено 19 июня 2017.
  7. Список поддерживаемых браузеров на сайте разработчика

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