Qtp Descriptive Programming (Russian)
-
Upload
yaron-assa -
Category
Self Improvement
-
view
4.075 -
download
3
description
Transcript of Qtp Descriptive Programming (Russian)
![Page 1: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/1.jpg)
DP 101 в 60-ти простых слайдах
www.AdvancedQTP.com
![Page 2: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/2.jpg)
Что такое DP?
DP - это
Дескрипторное Программирование
![Page 3: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/3.jpg)
Но что ОЗНАЧАЕТ
DP?
Это классная возможность работать без QTP-шного
Объектного Репозитория (OR)
![Page 4: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/4.jpg)
Почему бы мне этого хотелось?
![Page 5: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/5.jpg)
Есть много причин
![Page 6: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/6.jpg)
Вам придется
Функции и Сценарии восстановления работают с
разными акциями
Разные акции = Разные ORs
![Page 7: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/7.jpg)
Я тебя знаю?
Не уверен…
![Page 8: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/8.jpg)
Вам придется
Невозможно записать определенные объекты
Auto-hide панели
Объекты с изменяющейся иерархией
Вложенные внутренние объекты, подменю
![Page 9: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/9.jpg)
Всё еще висим, черт побери!
В тот момент когда вы уже думаете, что получили его – все свойства обнуляются
![Page 10: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/10.jpg)
Простота
Зачем убивать муху атомной бомбой?
Нет необходимости использовать OR для каждого одиночного нажатия кнопки в приложении
![Page 11: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/11.jpg)
и,Вы можете делать ОЧЕНЬ крутые
вещи с помощью DP
![Page 12: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/12.jpg)
OK, начнём
![Page 13: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/13.jpg)
Во-первых, нам необходимо лучше понять Объектный Репозиторий
Что такое OR
Как работает OR
![Page 14: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/14.jpg)
Я думал, что DP это всё, что НЕ касается
OR…
![Page 15: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/15.jpg)
Вообще да, но внутри DP и OR работают одинаково
То есть понимать OR – это значит понимать DP
![Page 16: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/16.jpg)
Что такое OR?
![Page 17: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/17.jpg)
Это мистическое существо, которое записывает объекты, чтобы
использовать их в дальнейшем
![Page 18: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/18.jpg)
Что значит записать объект?
Описать как идентифицировать его
![Page 19: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/19.jpg)
Кто ты?
=Как я могу распознать тебя?
![Page 20: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/20.jpg)
Идентификация выполнятся через
свойства и значения
![Page 21: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/21.jpg)
Кто ты?
=Твоя высота = 400
Твой заголовок = “NotePad”
Ты видимый (=True)
![Page 22: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/22.jpg)
Итак, что же ЗНАЧИТ OR?
Это коллекции свойств и соответствующих им значений
Каждая такая коллекция определят объект
Никакого мистического существа
![Page 23: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/23.jpg)
OK, что же ЗНАЧИТ тогда DP?
DP это вариант определения свойств и значений без использования
интерфейса OR
Опять никакого мистического существа
![Page 24: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/24.jpg)
OK, Я уловил, это не более чем свойства и их значения
Может мы приступим к работе?
![Page 25: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/25.jpg)
Как я РЕАЛЬНО могу использовать DP?
Есть два варианта
![Page 26: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/26.jpg)
1Вставка свойств и значений
напрямую в команду
![Page 27: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/27.jpg)
Это старый добрый известный вам синтаксис за исключением того, что строка в () – это не
OR.
Это идентификационная строка вида свойство:=значение
![Page 28: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/28.jpg)
Но это вроде ограничение
Что если я хочу использовать множество свойств?
![Page 29: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/29.jpg)
Нет проблем:
VBWindow(“height:=400”, “title:=New Document”).Maximize
Вы можете использовать столько свойств, сколько пожелаете
![Page 30: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/30.jpg)
Все замечательно но, что если я захочу использовать регулярные
выражения?
![Page 31: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/31.jpg)
Нет проблем:
VBWindow(“title:=.*Document.*”).Maximize
Значения свойств автоматически интерпретируются как регулярные выражения
![Page 32: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/32.jpg)
2Оформление свойств и значений в Description объект и вставка ЕГО в
команду
![Page 33: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/33.jpg)
В этом случае значения интерпретируются тоже как регулярные выражения. Чтобы
отключить это используйте
oDesc(“Property1”).RegularExpression = False
![Page 34: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/34.jpg)
Метод 1 - быстрее, наиболее применим для одной-двух команд
![Page 35: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/35.jpg)
Если вы хотите выполнить несколько команд над объектом, метод 2 более
предпочтителен
(позволяет, единожды определив, использовать многократно)
![Page 36: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/36.jpg)
Вы можете использовать
DP вместе с OR
VBWindow(“OR”).VBButton(“text:=OK”).Click
или (если oDesc - Description объект):
VBWindow(“OR”).VBButton(oDesc).Click
![Page 37: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/37.jpg)
НО, вы только можете начать с OR и продолжить с DP
То есть это не сработает:
VBWindow(“title:=notgood”).VBButton(“clickme”).Click
![Page 38: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/38.jpg)
И на этом всё
Вы можете использовать каждый из методов (или комбинировать их), и вы сможете использовать объекты,
которые не сохранены в OR
![Page 39: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/39.jpg)
Вы говорили, что я смогу делать действительно
крутые вещи с DP!
![Page 40: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/40.jpg)
Ты прав
Мы рассмотрим некоторые наиболее популярные трюки и
примеры
Эти примеры – только верхушка айсберга. Поработайте с ними и вы увидите истинную
мощь DP.
![Page 41: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/41.jpg)
Сила строки
DP – это не более чем просто строки
Но мы можем делать такие интересные вещи со строками…
![Page 42: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/42.jpg)
Сила строки
Скажем у нас есть приложение с 5 checkboxes, check0, …, check4
Мы можем установить их все с помощью простого цикла:
![Page 43: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/43.jpg)
Сила строки
Очень сложные проблемы идентификации могут быть решены манипуляциями со строками
Попробуйте различные варианты самостоятельно
![Page 44: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/44.jpg)
Дублированные объекты
Когда QTP находит два объекта удовлетворяющие одному описанию, он зависает
Это засада
![Page 45: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/45.jpg)
?
![Page 46: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/46.jpg)
В DP есть волшебное свойство: “index”, которое позволяет нам обращаться к дублированным
объектам раздельно
Index – это начинающийся с нуля счетчик
![Page 47: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/47.jpg)
Всё в порядке
![Page 48: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/48.jpg)
Получение коллекций объектов
Эта функциональность настолько крута, что заслуживает своего отдельного заголовка
![Page 49: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/49.jpg)
САМАЯ крутая вещь, которую вы можете
делать с DP - это получение коллекций объектов, удовлетворяющих условию отбора
![Page 50: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/50.jpg)
Я не знаю кто вы или сколько вас, но я хочу отметить вас всех!
Обычный DP не поможет – не знает как идентифицировать каждый checkbox
![Page 51: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/51.jpg)
Коллекции объектов идут на помощь!
Шаг 1: Определяем Description объект
![Page 52: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/52.jpg)
Коллекции объектов идут на помощь!
Шаг 2: Получаем все подходящие объекты
![Page 53: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/53.jpg)
Коллекции объектов идут на помощь!
Шаг 3: Используем коллекцию
oChildren сейчас содержит коллекцию всех checkboxes
И первый checkbox доступен как: oChildren(0)
![Page 54: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/54.jpg)
Что мы можем с ней делать?
Всё, что пожелаете
![Page 55: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/55.jpg)
Пример использования
Отметка всех Checkboxes
Отметка всех checkboxes с определенным свойством (в том числе RO)
![Page 56: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/56.jpg)
Возможности безграничны
Случайное заполнение полей
Заполнение только обязательных полей
Нулевая поддержка (новые поля добавляются автоматически , не замечая изменений UI)
Выбор объектов по сложным критериям (написание собственных механизмов идентификации)
Список можно продолжать и продолжать…
![Page 57: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/57.jpg)
OK, это несомненно круто, но все это позволяет нам манипулировать объектами внутри данного
окна.
А можем ли мы также работать с окнами самого приложения?
![Page 58: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/58.jpg)
Конечно
![Page 59: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/59.jpg)
Итак, с DP вы можете работать без OR
Иногда вы просто должны использовать его
В других случаях это забавно и полезно
DP также привносит множество бонусов, что делает его неотъемлемой частью качественной
QTP автоматизации
Пробуйте его, Экспериментируйте с ним, Изучайте его,
Используйте его, Любите его
Это стоит вашего времени
![Page 60: Qtp Descriptive Programming (Russian)](https://reader030.fdocument.pub/reader030/viewer/2022020217/549bc859b47959b7318b4577/html5/thumbnails/60.jpg)
Это был DP в 60-ти слайдах