AT.info ПОСИДЕЛКИ  vKontakte   facebook группа  
Файл

Первые шаги с Selenium RC

Установка Selenium RC

Selenium RC – инструмент для автоматизации функционального тестирования веб-приложений. Данный инструмент позволяет использовать различные языки программирования, фрэймворки, библиотеки разработки. Следует понимать, что Selenium RC – это сервер, который выполняет команды, а также клиентская библиотека команд.

 Тут подробнее про инструменты семейства Selenium. Скачать последнею версию Selenium RC можно с официального сайта проекта. После скачивания Selenium RC нужно просто разархивировать файлы в нужную директорию. Также для запуска Selenium Server нужно установить Java Runtime Environment (JRE) версии 1.5 и выше. Обратите внимание, что версия JRE должна быть не ниже 1.5. Чтобы проверить, установлен ли у вас JRE и какая у него версия, нужно выполнить в консоли команду: java –version

После скачки Selenium RC и установки JRE можно запускать Selenium Server. Для этого открываем директорию в которой установлен Selenium Server, запускаем консоль (“Пуск/Выполнить/cmd”). В консоли нужно выполнить следующую команду: java -jar selenium-server.jar

java -jar selenium-server.jar [options] – формат запуска Selenium Server.

[options] в формате запуска сервера- это дополнительные опции запуска Selenium Server. Более подробную информацию о параметрах запуска Selenium Server можно узнать на сайте проекта. Для запуска Selenium Server рекомендую сразу же сделать .bat файл, так будет удобнее запускать сервер. Также Selenium Server можно запускать из кода тестов. После запуска сервера у вас на экране должно появится примерно такое окно:

Запуск Selenium RC с использованием прокси

При запуске Selenium-а происходит перезапись текущей конфигурации прокси-сервера (proxy). Это делается для того, чтобы Selenium Server использовался в качестве прокси, через который отправляются команды браузеру.  Если вам нужно использовать ваш прокси-сервер одновременно с Selenium Server (например, если доступ к тестируемому веб-приложению есть только через прокси-сервер), то для этого нужно указать дополнительные параметры запуска Selenium Server:

  • Dhttp.proxyHost – адрес (или IP), на котором находится прокси;
  • Dhttp.proxyPort – порт, через который происходит соединение;
  • Dhttp.proxyUser – имя пользователя, если требуется HTTP-прокси аутентификация;
  • Dhttp.proxyPassword – пароль пользователя, если требуется HTTP-прокси аутентификация.

Пример запуска Selenium Server с указанием прокси-сервера:

Бесконечный цикл запуска тестов. Практика "чертового колеса"

Зачастую, когда объем автотестов становится весьма большим, достаточно тяжело уделять внимание запускам тестов. Тесты выполняются долго, часть проблем выявляется только после серии прогонов тестов и т.д. Более того, весьма полезно, чтобы результаты приходили регулярно и изменения, внесенные в код подхватывались по мере их внесения. Да и по сути, запуск тестов - это очередная рутина, которую хорошо бы делать регулярно, но в итоге всё делается, как получится. Соответственно, надо бы это как-то автоматизировать. Тут как раз подходит практика "Чёртового колеса"

Что это такое? Да, по сути это запуск всех тестов в бесконечном цикле. Вот и всё. Но сама по себе идея, как и многие другие идеи, весьма проста в озвучивании. Реализация же требует некоторой возни. Вот сосредоточимся на этом.

Итак, для того, чтобы можно было запускать тесты в бесконечном цикле нужна как минимум возможность одного запуска, после которого без всяких дополнительных действий можно повторить запуск полностью идентичным путем, после чего состояние системы останется таким же, как и до запуска. Что имеется в виду? Например, если мы используем какой-то внешний инструмент для тестирования (для того же UI-level тестирования как правило используются отдельные приложения), то получается следующая ситуация:

  1. До начала запуска необходимо гарантировать, что средство тестирования запущено
  2. По завершении запуска желательно средство тестирования закрыть по ряду причин

Всё это очевидно и решаемо. Наиболее простой случай - это использование определенных опций командной строки для закрытия средства тестирования после завершения выполнения всех тестов. Как правило средства автотестирования подобную опцию предоставляют. В крайнем случае в командных процессорах операционной системы есть команда удаления процесса по определенному имени.

Теперь ключевой момент: как зациклить.

Selenium RC (Java): Основные операции в действии. Часть 2

Часть 1, Часть 3

Работа с полем загрузки файлов

Одним из каверзных стандартных элементов управления на веб-страницах с точки зрения работы Selenium-a является поле загрузки файла. Фактически это текстовое поле и кнопка. В чем сложность? Сложность в том, что нажатие на кнопку Selenium-ом напрямую не делается (да и не нужно, если так посмотреть), а текстовое поле в общем случае доступно только для чтения, так что просто так ввести туда путь к файлу не получится. Это связано с тем, что Selenium-сервер взаимодействует с тестируемым веб-приложением путем посылки JavaScript-команд, а у объектов, соответствующих полям ввода файлов, атрибут value закрыт для записи. Это стандартное ограничение браузеров, блокирующее возможность автоматической загрузки произвольных файлов. Не стоит забывать, что клиентские скрипты несут в себе много чего вредоносного. Отчасти поэтому те же файлы с расширением js многими почтовиками блокируются. Это просто система защиты.

Тем не менее, данные проблемы так или иначе можно обойти. Итак, рассмотрим следующую секцию нашей тестовой страницы:

Реализуем шаг, в котором нам надо ввести некоторый текст в поле ввода файла и проверить, что текст введен корректно. Есть 2 способа ввести текст:

  • platform-specific - заключается в использовании сторонних библиотек, которые имитируют ввод с клавиатуры. В частности для Java можно воспользоваться классом java.awt.Robot.
  • browser-specific - заключается в том, что для определенных браузеров в определенном режиме поле ввода файлов доступно для записи на программном уровне. В частности, в режиме *chrome Selenium в состоянии ввести текст в поле ввода файла обычным вызовом type.

Из этих 2-х способов предпочтительнее выглядит 2-й по ряду причин. Во-первых, нет привязки к языку программирования, соответственно, данный подход универсален в контексте используемого языка программирования. Во-вторых, зачастую, использование внешних средств, имитирующих пользовательский ввод, привязывает код к конкретной группе операционных систем. И наконец, в-третьих, в большинстве случаев имитация ввода сводится к посылке некоторых сигналов "в эфир". Соответственно, если нужное нам окно не активно, то текст введется неизвестно куда. А ведь одно из удобств Selenium-a заключается в том, что тесты могут выполняться в фоновом режиме, в то время как пользователь может на той же машине заниматься своими делами.

Итак, нам нужно перейти в *chrome-режим, открыть страницу и ввести текст. Как-то так:

RSS-материал