Selenium: Вспомогательные инструменты

Одной из особенностей Selenium, которая отличает его от "традиционных" средств автоматизации функционального тестирования на уровне UI, является то, что Selenium не имеет своей выделенной интегрированной среды разработки. Отчасти это обусловлено тем, что тот же Selenium-RC представляет собой сервер, который выполняет команды + клиентская библиотека, портированная на некоторый язык программирования. Соответственно, тесты уже пишутся в среде, которая определяется языком программирования. Такой разброс в используемых средств влечет за собой отсутствие встроенных в IDE различных генераторов, визардов, которые могли бы упростить написание тестов. Тем не менее, есть ряд задач, которые решать приходится регулярно. Тот же подбор локатора - довольно распространенная задача. Фактически одна из ключевых. Поскольку нет выделенного IDE, то в подобных задачах нам на помощь приходят другие инструменты. Итак, какие же инструменты нам могут упростить жизнь

В первую очередь стоит отметить, что наиболее удобным для разработки браузером является на данный момент Firefox. Во-первых, в нем лучше обходится проблема с прокси, а во-вторых, за счет возможности создания отдельного профиля, можно зафиксировать различные настройки, в т.ч. сохранение файлов определенных без появления диалога.

Но самая главная сила данного браузера в его плагинах. В частности, тот же Selenium IDE фактически представляет собой плагин для Firefox. Поэтому, первым делом после скачивания основных компонент Selenium-а (имеется ввиду сервер и клиентские библиотеки), рекомендуется установить Selenium IDE. Чем он нам поможет:

  • На данный момент это чуть ли не единственное более-менее распространенное средство для record&playback тестов для Selenium. Как минимум он помогает определить, какие-же действия выполняются. Также полезен для определения тех же ID всплывающих окон, что не так просто обнаружить другими способами, в частности ковыряния исходного кода страницы.
  • В диалоге Selenium IDE есть функционал нахождения элементов на странице. При выборе какой-либо строки в поле, где содержатся команды, активируются поля Command, Locator, Parameter. В частности, у поля Locator есть кнопка Find, которая подсвечивает элемент, соответствующий данному локатору. Этот метод крайне полезен для определения корректности выбранного локатора.
  • Данное средство содержит возможность генерации кода записанного теста на выбранном языке программирования

Итак, наибольшую помощь нам сразу приносит Selenium-IDE, но на этом мы не останавливаемся.

Как уже выше отмечалось, одной из основных задач, которую приходится решать - это подбор локатора. Зачастую, для решения данной задачи приходится ковырять HTML-код страницы. Но если код сгенерирован на сервере или же ряд элементов генерируются клиентскими скриптами, то данная задача будет затруднена из-за громоздкого кода или от JScript конструкций, которые не отражают текущего состояния структуры документа. Но это всё можно просмотреть с помощью еще одного плагина для Firefox: Firebug.

Данный плагин позволяет просмотреть DOM-структуру текущей страницы, в т.ч. включая динамически сгенерированный контент.

Помимо этого, можеть помочь еще один плагин: XPath Checker. Поскольку XPath-локаторы являются чуть ли не самыми универсальными, то данный плагин позволит получить именно XPath выбранного элемента. Для этого надо только кликнуть правой кнопкой мыши на нужном элементе и в выпадающем меню выбрать пункт View XPath. Но учтите, что данное средство находит XPath используя общие алгоритмы, которые могут быть не оптимизированы под ваши нужды. Поэтому, локатор, полученный данным средством лучше немного оптимизировать.

Несмотря на то, что Firefox наиболее удобен для разработки тестов Selenium, другие браузеры не обделены вспомогательными средствами. В частности, для Internet Explorer имеются такие плагины, как:

Можно найти также ряд других средств, помогающих в разработке. Выше были перечислены основные, которые достаточно часто используются. Но самое главное, что эти средства лучше установить заранее, чтобы изначально облегчить себе ряд задач, которые возникают при разработке Selenium-тестов.