Знакомство с инструментами семейства Selenium
Данная заметка предоставляет основную (вводную) информацию об инструментах автоматизации тестирования семейства Selenium. Надеюсь, что знакомство с миром Selenium-а будет для вас интересным и приятным.
Selenium – это набор инструментов для автоматизации тестирования Web-приложений. В основе Selenium лежит среда Selenium Core разработанная на языке JavaScript. Данная среда дает возможность производить манипуляции над браузером и вызывать различные (поддерживаемые браузером) команды для выполнения определенных действий и проверок. Иными словами можно сказать, что команды, полученные от сценариев теста, выполняются непосредственно средствами браузера. Сам тест на Selenium-е представляет собой последовательность команд и проверок, написанных на одном из поддерживаемых языков программирования. Тесты также можно писать используя HTML.
Огромным плюсом Selenium-а является кроссбраузерность (поддержка различных браузеров). Фактически, ядро Selenium Core должно обеспечивать работу со всеми браузерами, в которых есть поддержка JavaScript. Информация о поддерживаемых браузерах и платформах размещена на сайте проекта: http://seleniumhq.org/about/platforms.html.
В семейство инструментов Selenium входит несколько проектов:
- Selenium Core – среда выполнения тестов, которая запускает требуемые тесты непосредственно в браузере. Фактически, Selenium Core является ядром для остальных инструментов семейства Selenium, поэтому рекомендую начинать изучение Selenium именно с этого инструмента. На первых этапах достаточно лишь понимания функционирования Selenium Core;
- Selenium IDE – расширение к браузеру Firefox, которое позволяет записывать, редактировать, отлаживать и выполнять тесты. Простой и удобный инструмент, очень хорош для создания несложных тестов, но не пригоден для создания сложных тестов;
- Selenium RC – инструмент для создания и интеграции автоматических тестов. Данный инструмент позволяет использовать различные языки программирования, фрэймворки, библиотеки разработки. Следует понимать, что Selenium RC – это только сервер, который выполняет команды, а также клиентская библиотека команд;
- Selenium WebDriver – усовершенствованная версия Selenium RC;
- Selenium GRID – инструмент для синхронного и контролируемого запуска тестов на разных платформах и машинах. Инструмент более сложного уровня;
- Selenium on Rails и Selenium on Ruby – версии Selenium специально разработаные для среды Ruby on Rails и языка программирования Ruby.
На данном экране представлен принцип работы Selenium RC, изображение взято с официального сайта проекта:
Разработчики Selenium предлагают следующую архитектуру тестов:
- Драйвер веб-интерфейса;
- Фрэймворк;
- Среда разработки + язык программирования;
- Библиотеки.
Немного поясню данную архитектуру. Драйвером веб-интерфейса является Selenium – на этом уровне происходит управление и выполнение браузерных команд. В Selenium можно использовать различные фрэймворки (TestNG, XUnit и др.) при написании тестов. Тесты можно писать в различных средах разработки и на различных языках программирования, при этом можно подключать пользовательские библиотеки. Все это делает Selenium мощнейшим инструментом автоматизации тестирования веб-приложений.
Плюсы инструментов Selenium:
- Кроссбраузерность и кроссплатформенность;
- Поддержка различных языков программирования;
- Инструмент записи тестов (Selenium IDE);
- Инструмент создания распределенных тестов (Selenium GRID);
- Поддержка различных библиотек;
- Поддержка различных сред разработки;
- Поддержка различных фрэймворков;
- Инструмент распространяется бесплатно;
- Инструмент, достаточно распространен, хватает различной информации по использованию инструментов Selenium;
- Много расширений, плагинов;
- Поддержка инструментов разработчиками;
- Достаточно просто начать работать.
Минусы инструментов Selenium:
- Часть браузерных команд невозможно выполнить с помощью JavaScript, это обусловлено целями безопасности браузеров. Из-за этого Selenium не умеет работать с несколькими окнами, табами, нельзя выходить за пределы одного домена другие ограничения накладываемые браузером при работе с JavaScript;
- Selenium плохо работает с всплывающими пользовательскими окнами;
- Сложно работать с большими списками объектов;
- Сложно работать с фрэймами;
- Не предусмотрен качественный механизм работы с Ajax запросами.
Инструменты семейства Selenium распространяются бесплатно. В интернете достаточно много свободной информации о данном инструменте. Инструмент поддерживается разработчиками, правда новые версии выпускаются нерегулярно. На мой взгляд, в своем классе Selenium – один из самый мощных инструментов, пожалуй только Watir может составить конкуренцию Selenium. Но это уже другая история
Официальный сайт инструмента: http://seleniumhq.org/

Мне немного довелось поработать с Селениум. Интересно как вы решаете проблему выбора между Selenium Core и Selenium RC.
Было бы здорово также упомянуть решение основных проблем, вроде некорректного перенаправления с одного домена на другой.
Интересно как вы решаете проблему выбора между Selenium Core и Selenium RC.
Selenium Core – это ядро (движок) для запусков тестов, на котором основывается вся линейка инструментов Selenium. Selenium Core отвечает за выполнение команд в браузере. Selenium RC действует как прокси-HTTP для веб-запросов браузерам, непосредственно сами браузерные команды выполняет Selenium Core.
Selenium RC предоставляет Вам уже готовую связку браузер – среда разработки – язык программирования – библиотеки -фрэймворки, поэтому рекомендую Selenium RC. Если есть необходимость использовать Selenium Core на другом сервере (не на Selenium RC или Selenium GRID), тогда используйте Selenium Core как ядро для управления браузером.
Было бы здорово также упомянуть решение основных проблем, вроде некорректного перенаправления с одного домена на другой
Эта проблема решается. Нужно запустить браузер в специальном (не безопасном) режиме. Это настраиваться в параметрах запуска браузера. Правда, не все браузеры разрешают работать в таком режиме. В данном случае можно часть тестов выполнять на одном домене, часть – на другом, правда это не очень красивое решение. Остальные проблемы тоже решаются, иногда красиво, иногда приходится искать обходные пути. В следующих заметках будут появляться варианты решения данных проблем.