qtp descriptive programming (russian)
DESCRIPTION
Translated by Sergey Talalaev (Thanks!)Quicktest professional - descriptive programming 101.www.AdvancedQTP.comTRANSCRIPT
DP 101 в 60-ти простых слайдах
www.AdvancedQTP.com
Что такое DP?
DP - это
Дескрипторное Программирование
Но что ОЗНАЧАЕТ
DP?
Это классная возможность работать без QTP-шного
Объектного Репозитория (OR)
Почему бы мне этого хотелось?
Есть много причин
Вам придется
Функции и Сценарии восстановления работают с
разными акциями
Разные акции = Разные ORs
Я тебя знаю?
Не уверен…
Вам придется
Невозможно записать определенные объекты
Auto-hide панели
Объекты с изменяющейся иерархией
Вложенные внутренние объекты, подменю
Всё еще висим, черт побери!
В тот момент когда вы уже думаете, что получили его – все свойства обнуляются
Простота
Зачем убивать муху атомной бомбой?
Нет необходимости использовать OR для каждого одиночного нажатия кнопки в приложении
и,Вы можете делать ОЧЕНЬ крутые
вещи с помощью DP
OK, начнём
Во-первых, нам необходимо лучше понять Объектный Репозиторий
Что такое OR
Как работает OR
Я думал, что DP это всё, что НЕ касается
OR…
Вообще да, но внутри DP и OR работают одинаково
То есть понимать OR – это значит понимать DP
Что такое OR?
Это мистическое существо, которое записывает объекты, чтобы
использовать их в дальнейшем
Что значит записать объект?
Описать как идентифицировать его
Кто ты?
=Как я могу распознать тебя?
Идентификация выполнятся через
свойства и значения
Кто ты?
=Твоя высота = 400
Твой заголовок = “NotePad”
Ты видимый (=True)
Итак, что же ЗНАЧИТ OR?
Это коллекции свойств и соответствующих им значений
Каждая такая коллекция определят объект
Никакого мистического существа
OK, что же ЗНАЧИТ тогда DP?
DP это вариант определения свойств и значений без использования
интерфейса OR
Опять никакого мистического существа
OK, Я уловил, это не более чем свойства и их значения
Может мы приступим к работе?
Как я РЕАЛЬНО могу использовать DP?
Есть два варианта
1Вставка свойств и значений
напрямую в команду
Это старый добрый известный вам синтаксис за исключением того, что строка в () – это не
OR.
Это идентификационная строка вида свойство:=значение
Но это вроде ограничение
Что если я хочу использовать множество свойств?
Нет проблем:
VBWindow(“height:=400”, “title:=New Document”).Maximize
Вы можете использовать столько свойств, сколько пожелаете
Все замечательно но, что если я захочу использовать регулярные
выражения?
Нет проблем:
VBWindow(“title:=.*Document.*”).Maximize
Значения свойств автоматически интерпретируются как регулярные выражения
2Оформление свойств и значений в Description объект и вставка ЕГО в
команду
В этом случае значения интерпретируются тоже как регулярные выражения. Чтобы
отключить это используйте
oDesc(“Property1”).RegularExpression = False
Метод 1 - быстрее, наиболее применим для одной-двух команд
Если вы хотите выполнить несколько команд над объектом, метод 2 более
предпочтителен
(позволяет, единожды определив, использовать многократно)
Вы можете использовать
DP вместе с OR
VBWindow(“OR”).VBButton(“text:=OK”).Click
или (если oDesc - Description объект):
VBWindow(“OR”).VBButton(oDesc).Click
НО, вы только можете начать с OR и продолжить с DP
То есть это не сработает:
VBWindow(“title:=notgood”).VBButton(“clickme”).Click
И на этом всё
Вы можете использовать каждый из методов (или комбинировать их), и вы сможете использовать объекты,
которые не сохранены в OR
Вы говорили, что я смогу делать действительно
крутые вещи с DP!
Ты прав
Мы рассмотрим некоторые наиболее популярные трюки и
примеры
Эти примеры – только верхушка айсберга. Поработайте с ними и вы увидите истинную
мощь DP.
Сила строки
DP – это не более чем просто строки
Но мы можем делать такие интересные вещи со строками…
Сила строки
Скажем у нас есть приложение с 5 checkboxes, check0, …, check4
Мы можем установить их все с помощью простого цикла:
Сила строки
Очень сложные проблемы идентификации могут быть решены манипуляциями со строками
Попробуйте различные варианты самостоятельно
Дублированные объекты
Когда QTP находит два объекта удовлетворяющие одному описанию, он зависает
Это засада
?
В DP есть волшебное свойство: “index”, которое позволяет нам обращаться к дублированным
объектам раздельно
Index – это начинающийся с нуля счетчик
Всё в порядке
Получение коллекций объектов
Эта функциональность настолько крута, что заслуживает своего отдельного заголовка
САМАЯ крутая вещь, которую вы можете
делать с DP - это получение коллекций объектов, удовлетворяющих условию отбора
Я не знаю кто вы или сколько вас, но я хочу отметить вас всех!
Обычный DP не поможет – не знает как идентифицировать каждый checkbox
Коллекции объектов идут на помощь!
Шаг 1: Определяем Description объект
Коллекции объектов идут на помощь!
Шаг 2: Получаем все подходящие объекты
Коллекции объектов идут на помощь!
Шаг 3: Используем коллекцию
oChildren сейчас содержит коллекцию всех checkboxes
И первый checkbox доступен как: oChildren(0)
Что мы можем с ней делать?
Всё, что пожелаете
Пример использования
Отметка всех Checkboxes
Отметка всех checkboxes с определенным свойством (в том числе RO)
Возможности безграничны
Случайное заполнение полей
Заполнение только обязательных полей
Нулевая поддержка (новые поля добавляются автоматически , не замечая изменений UI)
Выбор объектов по сложным критериям (написание собственных механизмов идентификации)
Список можно продолжать и продолжать…
OK, это несомненно круто, но все это позволяет нам манипулировать объектами внутри данного
окна.
А можем ли мы также работать с окнами самого приложения?
Конечно
Итак, с DP вы можете работать без OR
Иногда вы просто должны использовать его
В других случаях это забавно и полезно
DP также привносит множество бонусов, что делает его неотъемлемой частью качественной
QTP автоматизации
Пробуйте его, Экспериментируйте с ним, Изучайте его,
Используйте его, Любите его
Это стоит вашего времени
Это был DP в 60-ти слайдах