AT.info ПОСИДЕЛКИ  vKontakte   facebook группа  
selenium ide

Selenium IDE FlowControl: Примеры использования

По умолчанию Selenium IDE предоставляет возможность использовать только линейные последовательности команд. Это приводит к ряду не удобств, главное из которых – рост количества строк кода, что в дальнейшем снижает читаемость и сопровождаемость тестов. К счастью, добрыми людьми было разработано специальное расширение к Selenium IDE, которое позволяет использовать в тестах циклы, условия и переходы.

Расширение носит название FlowControl. Данное расширение помогает реализовывать в Selenium IDE практически полноценные тестовые сценарии с использованием циклов, операторов условий и переходов. Команды, доступные в расширении FlowControl значительно помогают при реализации ряда задач, а также способствую снижению количества строк кода, повышают читаемость и сопровождаемость тестовых сценариев. Скачать расширение и получить более детальную информацию о нем можно по этой ссылке.

Список команд, которые будут вам доступны при написании тестов на Selenium IDE, при использовании расширения FlowControl:

  • label – метка;
  • goto – переход;
  • gotoAndWait – переход и ожидание;
  • gotoIf – перейти к метке, если выполняется определенное условие;
  • gotoIfAndWait – перейти к метке, если выполняется определенное условие и ожидать события;
  • gotolabel – переход на метку;
  • gotolabelAndWait – переход на метку и ожидание события;
  • while – цикл while (пока выполняется условие);
  • whileAndWait – цикл while (пока выполняется условие) и ожидание событие;
  • endWhile команда выхода из цикла по достижению требуемого условия;
  • endWhileAndWait – команда выхода из цикла по достижению требуемого условия и ожидание наступления события.

Однозначно, с помощью расширения FlowControl ваши тесты на Selenium IDE станут более мощными и удобными в сопровождении.

Selenium IDE / RC как подключить user-extensions.js

User extensions – это набор пользовательских JS команд (не обязательно команд), которые позволяют расширить стандартную функциональность Selenium IDE. Существует достаточно большое количество уже готовых, разработанных другими пользователями, расширений для Selenium IDE. Также можно самостоятельно написать и использовать свое собственное дополнение к Selenium. Про самое полезное и наиболее используемое расширение для Selenium IDE – FlowControl я рассказал в своей предыдущей заметке. Наиболее известные расширения для Selenium можно найти тут.

Остается открытым вопрос – как добавить user-extensions к Selenium IDE?

Открываем Selenium IDE, затем переходим в опции: “Selenium-IDE’s Options=>Options=>General tab”. После этого в поле “Selenium Core extensions” нужно указать требуемое вам расширение ( местоположение файла на диске). После этого требуется перегрузить (закрыть, затем открыть) Selenium IDE. После этих не хитрых операций вы можете смело использовать дополнительный функционал при создании тестов. В списке команд должны появится дополнительные наборы команд (тут уже зависит от конкретного расширения).

Selenium IDE - user-extensions.js

Selenium IDE: примеры создания Test Case, Test Suite и работы с переменными

Test Case – это главная “боевая” единица в Selenium IDE. Test Case представляет собой набор специализированных команд для автоматизации тестирования определенной части программы. В Selenium IDE test case организованны в виде HTML-страниц, содержащих одну таблицу. Каждая строка таблицы содержит команду Selenium.  Например:

<tr>
<td>click</td>
<td>AddMember_btn</td>
<td></td>
</tr>

Строка таблицы содержит три поля:

  • Command – название команды;
  • Target – локатор элемента;
  • Value – значение передаваемое команде.

Вот так выглядит вызов команды Selenium-а Type(string locator, string value) (полностью пример смотреть здесь) с применением Java синтаксиса:

selenium.type("s", "Пишем тесты на Selenium IDE"); //вводим в текстовое поле значение “Пишем тесты на Selenium IDE”

А вот так выглядит эта же команда Selenium-а в HTML формате:

<tr>
<td>type</td>
<td>s</td>
<td>Пишем тесты на Selenium IDE</td>
</tr>

Test Suite – это группа тест-кейсов (test case), объединенных по некоторому принципу, и предназначенных для проверки определенной части программы. Для формирования test suite, нужно чтобы файлы тест-кейсов находились в одном каталоге с собравшим их test suite. TestSuite является обыкновенной HTML страницей, пример использования Test Suite:

Пишем тесты на Selenium IDE

Selenium IDE – расширение к браузеру FireFox, которое позволяет записывать, редактировать, отлаживать и выполнять тесты. Представляет собой простейший инструмент записи/воспроизведения авто тестов и отлично подходит для внедрения “легкой? автоматизации. Selenium IDE входит в семейство инструментов автоматизации Selenium. В основе Selenium лежит среда Selenium Core, разработанная на языке JavaScript. Данная среда дает возможность производить манипуляции над браузером и вызывать различные (поддерживаемые браузером) команды для выполнения определенных действий и проверок. Иными словами, можно сказать, что команды, полученные от сценариев теста, выполняются непосредственно средствами браузера.

Данный инструмент распространяется бесплатно, скачать его можно отсюда. Устанавливается данное “чудо” как обычное дополнение к браузеру FireFox, никаких проблем при установке возникнуть не должно. После установки открываем в меню браузера “Tools/Selenium IDE”, после чего откроется окно программы. Вот, собственно говоря, и оно:

Меню программы не должно создать особых проблем при его изучении. Круглая красная кнопка в правом верхнем углу отвечает за начало/конец записи теста. После включения записи все ваши действия в браузере будут записываться. Рекомендую потренировать на каком-нибудь простом сайтике и разобраться в работе команд Selenium IDE. Для воспроизведения тестов нужно нажать на кнопку “Run current test case”, остановить тест можно нажав на кнопку “Pause”. Кнопка “Step” позволяет поочередно выполнять все действия теста, очень удобно при отладке теста. Ползунок “Fast/Slow” в левом углу программы позволяет регулировать скорость выполнения теста.

Заходим в меню “Options” программы, на вкладке “General” можно указать следующие настройки:

  • Encoding of test files – формат кодирования тестов;

  • Default timeout value of recorded command – задержка при поиске элементов на странице;

  • Selenium Core extensions / Selenium IDE extinsions – можно указать пользовательские библиотеки, расширяющие возможности стандартных команд Selenium IDE;

  • Remember base Url – запоминать “базовый? адрес страницы при записи тестов;

  • Record assertTitle automation – при записи тестов автоматически добавлять проверку assertTitle для страницы;

  • Record absolute URL – записывать полный адрес станицы при записи теста;

  • Activate developer tools – позволяет перезагрузить пользовательские расширения;

  • Start recoding immediately on open – при активации данной опции Selenium IDE сразу при открытии будет начинать записывать тесты.

Основные команды в Selenium IDE / RC

Инструменты автоматизации функционального тестирования семейства Selenium на сегодняшний день достигли бешеной популярности. Невозможно представить специалиста по тестированию, который, как минимум, не слышал про данный инструмент. Каждый день все новые и новые специалисты по тестированию начинаю осваивать Selenium. Именно для новичков, желающих освоить основы Selenium IDE / RC, и предназначена эта заметка. В данной заметке будут представленны основные команды в Selenium IDE / RC.

Базовую информацию о инструментах автоматизации Selenium вы можете получить перейдя по этой ссылке.

В Selenium существует три типа команд:

  • Действия – функциональное действие над тестируемым веб-приложением в браузере. Например, заполнение полей, нажатие на кнопку и другие;
  • Проверки – выполнение проверок на тестируемой странице. Например, проверка того, что определенное поле формы имеет указанное значение, или проверка заголовка окна;
  • Ожидания – организация как, сколько и какое событие Selenium будет дожидаться (ожидания загрузки страницы, ajax и т.д.).

Проблема с определением локаторов элементов

Пользуюсь Selenium недавно, возникли сложности с определением локаторов некоторых элементов. Имеется страница с различными выпадающими окнами, которые все имеют практически идентичные id вида "выпадающее_меню_№"), где номер генерится при создании страницы и через раз меняется. Поэтому при создании xpath вида "//ul[contains(@id,'выпадающее_меню')] идет обращение к первому же такому элементу. Полностью прописать путь тоже не удается, т.к. он во всех случаях выглядит наподобие //html/body/div[№]/ul, и номер опять-таки изменяется.

RSS-материал