Как работи идентификацията на обекти в QTP/UFT?
⚡ Умно обобщение
Идентификация на обекти в QTP/UFT определя как инструментът разпознава всеки елемент от графичния потребителски интерфейс по време на тестово изпълнение, сравнявайки съхранените свойства на тестовия обект със свойствата на обекти по време на изпълнение, така че скриптовете да продължат да работят дори когато оформлението на екрана се промени.

Какво е идентификация на обекти в UFT/QTP?
Идентификацията на обектите е механизмът UFT/QTP използва за разпознаване на елемент от графичния потребителски интерфейс на екрана, така че скриптът да може да действа надеждно върху него, изпълнение след изпълнение. По време на сесия на запис, UFT изучава малък набор от свойства на обекта под показалеца на мишката и ги съхранява; по време на възпроизвеждане сравнява тези съхранени стойности със свойствата на всеки реално наличен обект и избира този, който съответства уникално, независимо къде се намира този обект на екрана сега.
Съхраненият обект, заедно със свойствата му UFT запомня се за това, се нарича Тестов обектСъответният елемент, който се показва на екрана, докато тестът се изпълнява, е Обект по време на изпълнениеСравняването на двете на всяка стъпка е основата на това, което Micro Focus нарича Модел на тестов обекти затова UFT Скриптът продължава да работи дори след като бутонът се премести с няколко пиксела или страницата бъде преоформена.
Хранилище за обекти и добавки
UFT съхранява всеки обучен тестов обект, заедно със съхранените му свойства, вътре Хранилище на обекти. Добавките казвам Бърз тест предварително към коя технология принадлежи екранът, така че инструментът вече знае кой набор от свойства се прилага и не е нужно да гадае, което намалява времето, необходимо за изучаване на обект.
Кликнете тук ако видеото не е достъпно
Всеки обект UFT Записите могат да съдържат десетки свойства. Само в уеб среда, един бутон може да покаже своето име, HTML таг, тип, клас, индекс и други. Записването на всички тях за всеки обект е технически възможно, но рядко полезно, както показва следващото изображение за типичен запис в хранилището на обекти.
If UFT опитал да запомни всяко налично свойство за всеки обект, хранилището за обекти щеше да се увеличи значително и изпълнението на скрипта щеше да се забави значително. За да се избегне това, QTP не запазва всяко свойство по подразбиране — запазва малък, типичен набор за всеки тип обект, като един е избран да се направи уникална идентификация възможно без допълнителните разходи. Този кратък списък със свойства, определен отделно за всяка среда и клас обекти, се конфигурира в настройките за идентификация на обекти, разгледани по-долу.
Обект Descriptйон: Задължителни и помощни свойства
Свойството на даден обект и неговата стойност заедно образуват това, което UFT призовава Обект Descriptйон — точната комбинация, която инструментът използва, за да избере един елемент от всеки друг обект на страницата. Например, за WebButton, свойството име със стойността Вход само по себе си често е достатъчно, за да формира използваем обект Descriptйон.
За да прегледате или промените това поведение, отворете Инструменти > Идентификация на обекти вътре UFTДиалоговият прозорец за идентификация на обекти изброява всички заредени в момента среди; избирането на една от тях автоматично попълва класовете обекти. UFT поддържа го, а панелът вдясно показва точно кои свойства се съхраняват за обекти от този клас. Списъкът е разделен на две групи:
- Задължителни свойства се съхраняват за всеки обект от този клас по подразбиране, независимо дали са действително необходими, за да го различат от съседите му.
- Помощни свойства се съхраняват само когато задължителните свойства сами по себе си не могат да изградят уникално описание — UFT обработва надолу по този списък едно свойство наведнъж, докато обектът стане уникален.
Уеб изображението прави правилото по-лесно за разбиране на практика.
- UFT винаги съхранява алтернативния текст, HTML тага и типа на изображението за уеб изображение, дори когато самият алтернативен текст е уникален.
- Ако задължителните свойства не могат да създадат уникално описание, UFT добавя свойството на класа от помощния списък.
- След като даден имот направи описанието уникално, UFT спира добавянето на още — пропуска името на файла и височината, ако класът вече е бил достатъчен, пропуска височината, ако е било необходимо името на файла и т.н.
- Да предположим, че само свойството на класа се записва по време на запис. По време на изпълнение, UFT вече не прави разлика кои свойства са задължителни и кои са помощни — просто сравнява всяко свойство в запазеното описание с обекта по време на изпълнение.
- Ако дори едно съхранено свойство не съвпада, стъпката се проваля — уникалното описание е двоично, а не съвпадение по метода „най-добро усилие“.
| Аспект | Задължителни свойства | Помощни свойства |
|---|---|---|
| Когато се съхранява | Винаги, за всеки обект от този клас | Само когато задължителните свойства не могат да формират уникално описание |
| Конфигурирано в | Диалогов прозорец за идентификация на обекти, списък със задължителни елементи | Диалогов прозорец за идентификация на обекти, помощен списък |
| Ред на употреба | Научено първо, безусловно | Добавят се един по един, докато обектът стане уникален |
| Лечение по време на протичане | В сравнение със същите помощни свойства | В сравнение със задължителните свойства |
Видеото по-долу разглежда този задължителен спрямо помощен работен процес от край до край.
Диалогов прозорец за идентификация на обекти Box и шпионин на обекти
Диалоговият прозорец за идентификация на обекти не е просто прозорец за преглед — той е мястото, където тестерът настройва колко агресивно UFT идентифицира обекти за цяла среда. Пренареждането, добавянето или премахването на свойство тук променя какво се научава за всеки обект от този клас от този момент нататък, а не само за този, който се записва в момента. Типичният работен процес изглежда така:
- отворено UFT и отидете Инструменти > Идентификация на обекти.
- Изберете среда (Уеб, Windows, Javaи т.н.) от падащото меню.
- Изберете клас обект, като например WebButton или WinEdit, от списъка вляво.
- Преместете свойства между списъците „Задължителни“ и „Помощни“ или пренаредете списъка „Помощни“, за да контролирате кое свойство UFT опитва първо.
- Активирайте или деактивирайте интелигентната идентификация за този клас, като използвате квадратчето за отметка в горната част на панела.
Промените, направени тук, ще важат следващия път UFT изучава обект от този клас — записите, които вече са запазени в хранилището на обекти, запазват оригиналното си описание, докато обектът не бъде записан отново или актуализиран ръчно.
Използване на Object Spy за проверка на свойства
Преди да редактират задължителния или помощния списък, повечето тестери проверяват как всъщност изглеждат свойствата на даден обект с Обектен шпионинНасочването на шпионския курсор към произволен контрол в тестваното приложение изброява едновременно свойствата на тестовия обект и свойствата по време на изпълнение, заедно с методите. UFT може да го използва — полезно е, когато задължително свойство непрекъснато се променя между компилациите и трябва да бъде заменено с по-стабилно.
Порядкови идентификатори: индекс, местоположение и време на създаване
Понякога дори всяко задължително и помощно свойство все още оставя два или повече обекта да изглеждат еднакво - например три квадратчета за отметка с едно и също име, клас и етикет. Точно за тази ситуация UFT пада обратно върху порядков идентификатор, резервна стойност, която класира иначе идентични обекти по тяхната позиция, вместо по техните свойства.
| Пореден идентификатор | Имот | Поръчката е възложена | Отнася се за |
|---|---|---|---|
| индекс | индекс | Подредете обекта, в който се появява в основния изходен код, започвайки от 0 | Всеки клас обекти |
| Адрес | Адрес | Отгоре надолу, след това отляво надясно на екрана, започвайки от 0 | Всеки клас обекти |
| Време за създаване | Време на създаване | Редът на отваряне на прозореца на браузъра, започвайки от 0 | Само обекти на браузъра |
UFT научава порядков идентификатор само когато задължителните и помощните свойства наистина не могат да разделят два обекта, защото стойността е относителна и може да се промени, ако оформлението на страницата се промени, въпреки че самият обект не се е променил. Фрагментът на VBScript по-долу използва Index, за да щракне върху втората от две връзки с еднакви имена.
Dim objBrowser, objPage Set objBrowser = Browser("title:=Guru99 Bank") Set objPage = objBrowser.Page("title:=Guru99 Bank") ' Index:=1 clicks the second Link named "Manage Order" (index starts at 0) objPage.Link("name:=Manage Order", "index:=1").Click
Стойностите на индекса и местоположението са специфични за класа обект, посочен в оператора, така че Индекс:=3 В WebEdit се търси само сред WebEdit обекти, докато една и съща стойност в генеричен WebElement се брои за всеки уеб обект на страницата, независимо от типа.
Къде се вписва интелигентната идентификация
Идентификация на обекти в UFT не спира до наученото описание. Когато не може да се намери уникално съвпадение, UFT преминава през процеса по фиксиран ред: първо проверява научените задължителни и помощни свойства, след това всеки визуален идентификатор на релация, накрая Интелигентна идентификация ако този механизъм е активиран за класа и само като последна мярка - порядков идентификатор.
Интелигентната идентификация умишлено се поставя между наученото описание и ординалния идентификатор. Тя възстановява списъка с кандидати, използвайки основните свойства на класа и го стеснява с незадължителни, така че често може да възстанови обект, чието научено описание е повредено - например преименуван бутон - без изобщо да докосва хранилището на обекти. Тъй като тази допълнителна стъпка на търсене струва време, повечето екипи я активират за класове, които са чувствителни към идентификация, и се осланят на ординални идентификатори само там, където позицията наистина е единственият останал диференциатор, като например банка от немаркирани радио бутони.


