18.12.2021

Selenium


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

История

В июне 2004 года разработчик 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» в переводе с английского языка — ртуть), написав о том, что можно вылечиться от отравления ртутью, принимая с пищей селен.

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), проходившей в Нью-Йорке 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».

В 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, в которых указано действие, которое должен совершить браузер в рамках текущей сессии. Примерами таких команд могут быть команды нахождения элементов по локатору, переход по ссылкам, парсинг текста страницы/элемента, нажатие кнопок или переход по ссылкам на странице веб-сайта. Существуют как официальные привязки библиотеки к популярным языкам программирования, так и любительские. К примеру, библиотека для поддержки языка PHP не является официальной и разрабатывается Facebook.

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

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

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

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

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

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


Похожие новости:

Object Windows Library

Object Windows Library
Object Windows Library (OWL) — библиотека классов, разработанная фирмой Borland для создания оконных приложений на языках Си и Pascal. Данная библиотека использовалась во многих средствах

Shorewall

Shorewall
Shorewall или более точно Shoreline Firewall — инструмент для настройки файрвола в Linux, программное обеспечение под свободной лицензией GNU GPL. Технически является надстройкой над подсистемой

Ван Россум, Гвидо

Ван Россум, Гвидо
Гвидо ван Россум (нидерл. Guido van Rossum; род. 31 января 1956, Харлем, Нидерланды) — голландский программист, прежде всего известный как автор языка программирования Python. Среди разработчиков

Резиновая верстка сайта

Резиновая верстка сайта
Резиновая верстка сайтов - это пропорциональное растягивание и сжимание составляющих сайта, которое подстраивается под размер экрана пользователей.
Комментариев пока еще нет. Вы можете стать первым!

Добавить комментарий!

Ваше Имя:
Ваш E-Mail:
Введите два слова, показанных на изображении: *
Популярные новости
Однорольные монтажные блоки GEARSEN – особенности разных серий
Однорольные монтажные блоки GEARSEN – особенности разных серий
Выполнение грузоподъемных и такелажных работ предусматривает необходимость использования...
Юкам-Груп – эффективное конвейерное и автоматизированное оборудование
Юкам-Груп – эффективное конвейерное и автоматизированное оборудование
Каждое предприятие старается повысить эффективность своей деятельности. Для этого можно...
Говорящий интерьер: главные черты и стилистические группы элитного дизайна квартир и загородных домов
Говорящий интерьер: главные черты и стилистические группы элитного дизайна квартир и загородных домов
Отказ от типовых решений, оформление в пользу уникальности и комфорта хозяев квартиры и...
Все новости