qtp descriptive programming (russian)
Embed Size (px)
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-ти слайдах