Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб4

.docx
Скачиваний:
36
Добавлен:
05.06.2015
Размер:
47.23 Кб
Скачать

Лабораторная работа №4. Использование UI-element в Selenium IDE

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

Отчет по лабораторной работе: набор тест-кейсов, работающих с картой элементов.

Теоретическая часть

Элемент интерфейса (UI-element) в Selenium IDE - это расширение, которое дает возможность определить связи между семантически значимыми именами элементов на веб-страницах с ними самими. Карта элементов хранится в отдельном файле с расширением *.js.

Определения

Страница - уникальный адрес, а так же содержимое, доступное по этому адресу. На странице обычно присутствует несколько интерактивных элементов.

Элемент страницы - какой-либо элемент на веб-странице. В общем случае, элементом страницы является объект, с которым пользователь может взаимодействовать или содержание которого имеет важное значение.

Набор страниц - набор страниц, на которых доступен некоторый набор элементов страницы. Например, в приложении есть возможность авторизоваться посредством формы авторизации с нескольких страниц. Такие формы могут быть представлены одним набором элементов и, соответственно, ассоциироваться на различных страницах.

Элемент интерфейса - связь между значимым элементом страницы и локатором конкретного элемента. Элемент страницы может находиться, например, по XPath. Элемент интерфейса принадлежит набору страниц.

Аргумент интерфейса - опциональный атрибут логики, определяющий как будет сгенерирован XPath для элемента интерфейса. Обычно используется, когда один элемент интерфейса появляется несколько раз на странице и необходимо указать к какому именно элементу происходит обращение. Например, если на странице присутствует 20 чекбоксов, то номер чекбокса может служить аргументом интерфейса.

Карта интерфейса - коллекция наборов страниц, которые содержут в себе элементы интерфейса.

Определяющая строка интерфейса - некоторый текст, определяющий имя набора страниц, элементов интерфейса или аргументов интерфейса. Определяющие строки интерфейса используются для присваивания “человекочитаемого” названия для соответствующего элемента страницы.

Сценарий - логика, которая описывает как одна или несколько команд Selenium должна быть объединена в одну команду.

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

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

Почему необходимо применять карту элементов?

Благодаря карте элементов ваш тест-кейс может выглядеть вот так:

<tr> <td>open</td> <td>/</td> <td></td> </tr> <tr> <td>clickAndWait</td> <td>ui=allPages::section(section=topics)</td> <td></td> </tr> <tr> <td>clickAndWait</td> <td>ui=topicListingPages::topic(topic=Process)</td> <td></td> </tr> <tr> <td>clickAndWait</td> <td>ui=subtopicListingPages::subtopic(subtopic=Creativity)</td> <td></td> </tr> <tr> <td>click</td> <td>ui=subtopicArticleListingPages::article(index=2)</td> <td></td> </tr>

Синтаксис описания карты элементов

Формат описания карты элементов выглядит следующим образом:

var map = new UIMap(); map.addPageset({ name: 'aPageset' , ... }); map.addElement('aPageset', { ... }); map.addElement('aPageset', { ... }); ... map.addPageset({ name: 'anotherPageset' , ... }); ...

Карта объектов инициализируется при создании нового объекта UIMap. Следом определяется новый набор страниц, для каждого из которых могут быть определены элементы страницы.

Создание карты элементов

Для создания карты элементов необходимо выполнить 3 шага: инициализировать саму карту, добавить необходимое количество наборов страниц и на каждый из них добавить необходимое количество элементов.

Создание карты осуществляется следующей командой:

var myMap = new UIMap();

Инициализация набора страниц и привязка его к карте осуществляется путем добавления объекта с набором определенных свойств к объекту карты:

myMap.addPageset(

{

name: 'mainPage', //Имя набора страниц. Будет отображаться в описании при вызове из Selenium IDE во вкладке References

description: 'investcafe main page', //Подробное описание. Будет так же отображено в Selenium IDE во вкладке References

pathRegexp: '.*' //Регулярное выражение, соответствующее набору страниц (в данном случае - все страницы сайта)

}

);

Инициализация элементов страницы и привязка ее к карте элементов осуществляется следующим образом:

myMap.addElement('mainPage', //Указываем на каком наборе страниц будет этот элемент

{

name: 'marketMoodNum', //Человекопонятное имя для этого элемента

description: 'current mood of the market in number presentation', //Описание элемнета. Вывод аналогичен предыдущему примеру

locator: "//div[@class='number']" //Местонаходения элемента на странице

}

);

Добавление элемента с аргументами:

myMap.addElement('mainPage', //Указываем на каком наборе страниц будет этот элемент

{

name: 'menuElement', //Человекопонятное имя для этого элемента

description: 'main menu (link=<menuItem> as argument)', //Вы уже знаете что это

args: //Набор аргументов в виде массива с параметрами

{

name: 'link', //Имя параметра

description: 'element item as text', //Описание параметра

defaultValues: '' //Значение по умолчанию

},

getLocator: function(args) //Функция для получения локатора элемента

{

var item = args.link; //Получаем из масива args значение аргумента link

return "//a[contains(text(),'" + item + "')]"; //Возвращаем полученный локатор в Selenium

}

}

);

Создание сценариев

Для создания сценариев необходимо проделать похожую на создание карты элементов процедуру. Сначала необходимо создать менеджер сценариев, а потом описать все сценарии, который вы собираетесь использовать.

Для создания менеджера сценариев необходимо написать следующую команду:

var manager = new RollupManager();

После создания менеджера сценариев необходимо в виде массива запрограммировать сами сценарии, которые вы в дальнейшем планируете использовать. Например, можно написать сценарий регистрации в системе под пользователем с ником admin:

var users = new Array(); //Используем возможности языка JavaScript для создания массива

users['login'] = 'admin';

users['pass'] = '1234';

manager.addRollupRule(

{

name: 'login_as_admin', //Название сценария

description: 'authorize with admin user', //Описание сценария

commandMatchers: [], //Аргументы команд сценария

getExpandedCommands: function() //Последовательность действий сценария

{

var commands = []; //Последовательность действий должна быть помещена в массив команд в том порядке, в котором они будут выполняться

//Добавляем команду в массив. Команда добавляется в том же виде, что и в Selenium IDE - то есть необходимо заполнить столько же полей, сколько и требует команда в самой оболочке Selenium IDE

// Наш сценарий будет состоять из слудеющих команд: открыть главную страницу, пройти по ссылке на страницу регистрации, кликнуть по ссылке страницы авторизации, ввести логин пользователя в поле для логина, ввести пароль пользователя в поле для пароля, подождать 3 секунды, нажать на кнопку авторизации

commands.push({

command: 'open',

target: ''

});

commands.push({

command: 'clickAndWait',

target: 'ui=allPages::reglink()'

});

commands.push({

command: 'click',

target: 'ui=allPages::authlink()'

});

commands.push({

command: 'type',

target: 'ui=allPages::login_form()',

value: users['login']

});

commands.push({

command: 'type',

target: 'ui=allPages::pass_form()',

value: users['pass']

});

commands.push({

command: 'pause',

target: '3000'

});

commands.push({

command: 'clickAndWait',

target: 'ui=allPages::enter_button()'

});

return commands;

}

}

);

Подключение и использование карты элементов к Selenium IDE

После того как наша карта готова, необходимо сохранить ее в формате *.js. Далее нужно перейти в окно настроек Selenium IDE (Options) и указать сохраненный файл в поле Selenium Core Extensions. Чтобы изменения вступили в силу необходимо перезапустить Selenium IDE.

После перезапуска будут доступны локатыры вида “ui=...”. Это и есть элементы, которые мы описывали.

Со всеми этими элементами интерфейса доступны для выполнения стандартные команды Selenium.

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

ui=mainPage::menuElement(link=О нас)

Если команда была вызвана правильно, то Selenium IDE даст об этом знать:

Для вызова сценариев необходимо воспользоваться командой rollup. После ввода ее в соответствующее поле Selenium IDE в выпадающем списке сформируется список всех сценариев, описанных в js-файле. Останется только раскрыть его и выбрать нужный.

Практическая часть

Составить набор тестов для выбранного преподавателем раздела согласно варианту задания, используя карту элементов и набор запрограммированных сценариев (Rollups).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]