Учебники

26) Описательное программирование

Что такое описательное программирование?

Описательное программирование используется для выполнения операций над объектом в AUT, определение которого не сохраняется в репозитории объектов. Используя этот механизм, вы можете обойти идентификацию из репозитория объектов и предоставить описание объекта в самом операторе.

Имя объекта просто используется для сопоставления объекта в сценарии с его описанием в хранилище объектов. Это означает, что если вы измените имя объекта в вашем скрипте и хранилище объектов, скрипт должен запуститься. Посмотрите следующее видео на эту концепцию

Нажмите здесь, если видео не доступно

 

Видео Основные

  • Удалите описание объекта Win Agent Поле редактирования имени агента из репозитория объектов. Если вы запустите тест снова, он потерпит неудачу, так как не сможет распознать объект. Давайте рассмотрим причину сбоя скрипта
  • Во время выполнения Micro Focus UFT идентифицирует операцию, выполняемую в окне WinEdit, и описание объекта в репозитории объектов сохраняется как имя агента. Он использует это имя для отслеживания объекта в хранилище объектов. Для родителя не может быть двух дочерних объектов с одинаковым именем. Следовательно, QTP однозначно отображает объект в хранилище. Затем он использует сохраненное описание в репозитории объектов и заменяет имя описанием. Затем он использует этот оператор для идентификации объекта в тестируемом приложении.
  • Так как в нашем случае мы полностью удалили описание этого объекта, сценарий завершился неудачей.
  • Но что, если вместо QTP заменить описание объекта, вы, как тестировщик, прямо указываете описания объектов в своем скрипте. Это не что иное, как «Описательное программирование»

Типы описательного программирования

Вы можете использовать описательное программирование двумя способами

  1. статический
  2. динамический

Статическое описательное программирование

В статическом методе для идентификации объекта вы указываете свойство объекта в следующем формате

property:=values,

Этот формат называется парой значений свойства и заключен в кавычки>

Если ваш объект использует несколько описаний для идентификации, вы можете указать те, которые используют запятые >

Таким образом, в нашем случае описание агента имя становится

"nativeclass:=Edit", "attached text:=Agent Name:"

Динамическое описательное программирование

Второй метод выполнения того же действия — использование динамического описательного программирования.

Если ваш сценарий использует кандидата описательного объекта программирования несколько раз, будет очень утомительно указывать все пары значений свойств для каждого оператора

В таких случаях вы можете использовать Description Class, предоставляемый QTP

Синтаксис для создания объекта описания

Set MyDescription = Description.Create();
MyDescription("property").Value = "property-value";

Это динамический метод

Зачем использовать описательное программирование?

Стенограмма видео

  • Вопрос на миллион долларов — зачем использовать DP, когда процесс идентификации объекта обрабатывается QTP
  • Предположим, вы назначены для тестирования портала вакансий. Вы вводите поисковый запрос в портал и
  • ваш тест ожидает, что вы выберете все доступные вакансии. и нажмите применить работу
  • Но количество отображаемых заданий будет зависеть от поискового запроса и заданий, доступных на момент выполнения скрипта, но невозможно заранее предсказать количество заданий, которые будут отражены.
  • В таких случаях вы можете использовать описательное программирование. Даже если вы не знаете количество и имена флажков, вы знаете класс для объектов как «WebCheckBox»
  • Вы можете использовать метод ChildObject для возврата объектов, принадлежащих конкретному родителю
  • Строка кода, как —
    Set allObjects = Browser("Jobs").Page("QTP").ChildObjects()
  • Вернет все дочерние объекты для этой страницы.
  • Но нам нужны только объекты WebCheckBox. Для этого мы можем создать объект создания фильтра и установить его свойство как веб-флажок и передать этот фильтр в качестве аргумента для метода ChildObjects.
  • В этом случае возвращаются только флажки.
  • Затем вы можете написать код, подобный этому, который обращается ко всей коллекции флажков, начиная с нуля, и устанавливает все флажки в положение ON.
  • Далее вы можете нажать кнопку «Применить» для завершения теста.
  • Вы также можете использовать описательное программирование для запуска объектов, которые трудно записать, таких как автоматическое скрытие панелей, объекты с изменяющимися иерархиями, вложенные внутренние объекты, подменю.
  • Вы также можете выполнять сложные манипуляции со строками, используя описательное программирование
  • В сочетании со свойством индекса описательное программирование может быть очень полезным при идентификации сложных объектов.
  • Если вы используете программное описание для объекта в иерархии объектов, вам нужно будет использовать программирование описания для последующих дочерних объектов
  • Например, для объекта страницы использовалось описательное программирование, но для последующего дочернего объекта используется репозиторий объектов WinEdit, что неверно
  • Наоборот, здесь и для Page, и для WinEdit используется описательное программирование, которое является правильным