Использование маппинга пользовательского интерфейса в Selenium RC
Опубликовано palitra в 04.06.2010
Карта пользовательского интерфейса (UI map) - это хранилище идентификаторов-указателей на элементы пользовательского интерфейса приложения. Карта создается чтобы тестовый скрипт через нее обращался к тестируемым элементам. UI map также хранит в себе объекты тестового скрипта, которые соответствуют элементам интерфейса тестируемого приложения.
В чем же польза UI map? Основное назначение это упрощение управлением тестовыми скриптами. Например, если вам требуеться изменить указатель, то вместо прочесывания всего кода в распоряжении имеется централизованное место хранения, где его можно легко отыскать. Большим преимуществом будет внесение изменений лишь в одном месте карты, чем в нескольких местах кода или, еще хуже, нескольких скриптах.
Суммируя, можно выделить два основных преимущества UI Mapping:
- Использование централизованного места для хранения объектов пользовательского интерфейса вместо поддержки разбросанных по всему коду элементов.
- Скрытые идентификаторы и имена HTML можно заменить более понятными, что значительно облегчит читабельность тестовых скриптов
Рассмотрим следующий пример (java) selenium тестов для сайта:
public void testNew() throws Exception {
selenium.open("http://www.test.com");
selenium.type("loginForm:tbUsername", "xxxxxxxx");
selenium.click("loginForm:btnLogin");
selenium.click("adminHomeForm:_activitynew");
selenium.waitForPageToLoad("30000");
selenium.click("addEditEventForm:_IDcancel");
selenium.waitForPageToLoad("30000");
selenium.click("adminHomeForm:_activityold");
selenium.waitForPageToLoad("30000");
}
Этот скрипт вряд ли будет понятен кому-то, кто не знаком с исходной страницей авторизации. Даже постоянные пользователи приложения будут иметь трудности с пониманием работы скрипта. Гораздо лучше выглядят следующие строки:
public void testNew() throws Exception {
selenium.open("http://www.test.com");
selenium.type(admin.username, "xxxxxxxx");
selenium.click(admin.loginbutton);
selenium.click(admin.events.createnewevent);
selenium.waitForPageToLoad("30000");
selenium.click(admin.events.cancel);
selenium.waitForPageToLoad("30000");
selenium.click(admin.events.viewoldevents);
selenium.waitForPageToLoad("30000");
}
В примере выше по-прежнему отсутствуют комментарии, однако он удобочитаем за счет использования ключевых слов. (Имейте ввиду, что UI Map не является заменой комментариев! Комментарии по прежнему очень важны при разработке автоматизированных тестов.) И еще красивее будет выглядеть следующий пример:
public void testNew() throws Exception {
// Открыть url приложения.
selenium.open("http://www.test.com");
// Введите имя администратора.
selenium.type(admin.username, "xxxxxxxx");
// Щелкните кнопку Login.
selenium.click(admin.loginbutton);
// Щелкните кнопку Create New Event.
selenium.click(admin.events.createnewevent);
selenium.waitForPageToLoad("30000");
// Щелкните кнопку Cancel.
selenium.click(admin.events.cancel);
selenium.waitForPageToLoad("30000");
// Щелкните кнопку View Old Events.
selenium.click(admin.events.viewoldevents);
selenium.waitForPageToLoad("30000");
}
Основная идея состоит в использовании централизированного места для объектов и использования удобочитаемых названий для этих объектов.
Чтобы применить этот подход на практике, можно использовать java файлы, описывающие свойства (*.properties). Такие файлы содержат пары ключ/значение, где каждый ключ и значения являются строками.
Рассмотрим файл prop.properties, в котором легко понятные идентификаторы присваиваются как ‘псевдонимы’ для ранее использованных HTML объектов.
admin.username = loginForm:tbUsername admin.loginbutton = loginForm:btnLogin admin.events.createnewevent = adminHomeForm:_activitynew admin.events.cancel = addEditEventForm:_IDcancel admin.events.viewoldevents = adminHomeForm:_activityold
Указатели по-прежнему ссылаются на объекты HTML, однако мы определяем слой абстракции между тестовым скриптом и элементрами пользовательского интерфейса. Значения, считываемые из файла свойств (*.properties) представляют собой карту пользовательского интерфейса, то есть UI Map. Более подробно Map файл будет рассмотрен в следующем выпуске.
Источник:
»
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии








