Cum funcționează identificarea obiectelor în QTP/UFT?
⚡ Rezumat inteligent
Identificarea obiectelor în QTP/UFT determină modul în care instrumentul recunoaște fiecare element GUI în timpul unei rulări de test, comparând proprietățile stocate ale obiectului de testare cu proprietățile active ale obiectului în timpul rulării, astfel încât scripturile să continue să funcționeze chiar și atunci când aspectul ecranului se modifică.

Ce este identificarea obiectelor în UFT/QTP?
Identificarea obiectelor este mecanismul UFT/QTP folosește pentru a recunoaște un element GUI pe ecran, astfel încât un script să poată acționa în mod fiabil asupra acestuia, rulare după rulare. În timpul unei sesiuni de înregistrare, UFT studiază un set mic de proprietăți pentru obiectul aflat sub indicatorul mouse-ului și le stochează; în timpul redării, compară acele valori stocate cu proprietățile fiecărui obiect prezent în realitate și îl alege pe cel care se potrivește în mod unic, indiferent de locul în care se află acum obiectul respectiv pe ecran.
Obiectul stocat, împreună cu proprietățile UFT își amintește pentru asta, se numește Obiect de testareElementul corespunzător care există pe ecran în timp ce testul rulează este Obiect de rulareCompararea celor două la fiecare pas este fundamentul a ceea ce Micro Focus numește Modelul obiectului de testare, și de aceea o UFT Scriptul continuă să funcționeze chiar și după ce un buton se mișcă cu câțiva pixeli sau o pagină este restilizată.
Depozit de obiecte și programe de completare
UFT păstrează fiecare Obiect de Test învățat, împreună cu proprietățile sale stocate, în interiorul Depozit de obiecte. Add-in-uri spune Test rapid în avans cărei tehnologii îi aparține un ecran, astfel încât instrumentul știe deja ce set de proprietăți se aplică și nu trebuie să ghicească, ceea ce reduce timpul necesar pentru învățarea unui obiect.
Clic aici dacă videoclipul nu este accesibil
Fiecare obiect UFT Înregistrările pot conține zeci de proprietăți. Într-un singur mediu web, un singur buton poate expune numele, eticheta HTML, tipul, clasa, indexul și multe altele. Înregistrarea tuturor acestora pentru fiecare obiect este posibilă din punct de vedere tehnic, dar rareori utilă, așa cum arată următoarea imagine pentru o intrare tipică în Object Repository.
If UFT încerca să-și amintească fiecare proprietate disponibilă pentru fiecare obiect, Depozitul de Obiecte creștea în dimensiune, iar execuția scriptului încetinea considerabil. Pentru a evita acest lucru, QTP nu salvează fiecare proprietate în mod implicit — salvează un set mic, tipic pentru fiecare tip de obiect, unul ales pentru a face identificare unică posibil fără costuri suplimentare. Această listă scurtă de proprietăți, decisă separat pentru fiecare mediu și clasă de obiecte, este configurată în setările de Identificare a obiectelor, prezentate în continuare.
Obiect Description: Proprietăți obligatorii și asistive
Proprietatea unui obiect și valoarea sa formează împreună ceea ce UFT apelează Obiect Description — combinația exactă pe care instrumentul o folosește pentru a selecta un element din fiecare alt obiect de pe pagină. Pentru un WebButton, de exemplu, proprietatea nume cu valoarea Intră în cont este adesea suficient de la sine pentru a forma un Obiect utilizabil Description.
Pentru a revizui sau modifica acest comportament, deschideți Instrumente > Identificare obiecte în interiorul UFTCaseta de dialog Identificare obiect listează toate mediile încărcate în prezent; selectarea unuia va popula automat clasele de obiecte. UFT suportă acest lucru, iar panoul din dreapta arată exact ce proprietăți sunt stocate pentru obiectele din acea clasă. Lista este împărțită în două grupuri:
- Proprietăți obligatorii sunt stocate în mod implicit pentru fiecare obiect din acea clasă, indiferent dacă sunt sau nu necesare pentru a-l diferenția de vecinii săi.
- Proprietăți de asistență sunt stocate doar atunci când proprietățile obligatorii nu pot construi o descriere unică — UFT parcurge această listă proprietate cu proprietate, până când obiectul devine unic.
O imagine web face regula mai ușor de observat în practică.
- UFT stochează întotdeauna textul alternativ, eticheta HTML și tipul de imagine pentru o imagine web, chiar și atunci când textul alternativ în sine este deja unic.
- Dacă proprietățile obligatorii nu pot crea o descriere unică, UFT adaugă proprietatea clasei din lista de asistență.
- Odată ce o proprietate face ca descrierea să fie unică, UFT oprește adăugarea de mai multe — omite numele fișierului și înălțimea dacă clasa era deja suficientă, omite înălțimea dacă era necesar numele fișierului și așa mai departe.
- Să presupunem că doar proprietatea clasei este înregistrată la momentul înregistrării. La momentul execuției, UFT nu mai distinge care proprietăți erau obligatorii și care erau asistative - pur și simplu compară fiecare proprietate din descrierea salvată cu obiectul din timpul execuției.
- Dacă chiar și o singură proprietate stocată nu se potrivește, pasul eșuează - o descriere unică este binară, nu o potrivire bazată pe cel mai bun efort.
| Aspect | Proprietăți obligatorii | Proprietăți de asistență |
|---|---|---|
| Când este stocat | Întotdeauna, pentru fiecare obiect din acea clasă | Numai atunci când proprietățile obligatorii nu pot forma o descriere unică |
| Configurat în | Dialog de identificare a obiectelor, listă obligatorie | Dialog de identificare a obiectelor, listă asistentă |
| Ordinea de utilizare | Învățat mai întâi, necondiționat | Adăugate pe rând până când obiectul devine unic |
| Tratament în timpul execuției | Comparativ cu proprietățile auxiliare | Comparativ cu proprietățile obligatorii |
Videoclipul de mai jos prezintă acest flux de lucru obligatoriu versus asistiv de la început până la sfârșit.
Dialogul de identificare a obiectelor Box și Spionaj de obiecte
Dialogul de Identificare a Obiectelor nu este doar un vizualizator — este locul unde un tester ajustează cât de agresiv este UFT identifică obiectele pentru un întreg mediu. Reordonarea, adăugarea sau eliminarea unei proprietăți aici modifică ceea ce se învață pentru fiecare obiect din acea clasă din acel moment înainte, nu doar pentru cel înregistrat în prezent. Fluxul de lucru tipic arată astfel:
- Operatii Deschise UFT și du-te la Instrumente > Identificare obiecte.
- Alegeți un mediu (Web, Windows, Javași așa mai departe) din meniul derulant.
- Selectați o clasă de obiecte, cum ar fi WebButton sau WinEdit, din lista din stânga.
- Mutați proprietățile între listele Obligatorii și Asistențiale sau reordonați lista Asistențială pentru a controla ce proprietate UFT încearcă mai întâi.
- Activați sau dezactivați Identificarea inteligentă pentru clasa respectivă utilizând caseta de selectare din partea de sus a panoului.
Modificările făcute aici se aplică data viitoare UFT învață un obiect din acea clasă — intrările deja salvate în Depozitul de Obiecte își păstrează descrierea originală până când obiectul este reînregistrat sau actualizat manual.
Utilizarea Object Spy pentru inspectarea proprietăților
Înainte de a edita lista obligatorie sau asistativă, majoritatea testerilor verifică cum arată de fapt proprietățile unui obiect cu Obiect SpionIndicarea cursorului spion către orice control din aplicația testată listează atât proprietățile obiectului de testare, cât și proprietățile din timpul execuției, una lângă alta, împreună cu metodele. UFT se poate apela la ea — util atunci când o proprietate obligatorie se schimbă constant între versiuni și trebuie înlocuită cu una mai stabilă.
Identificatori ordinali: Index, Locație și Ora creării
Uneori, chiar și fiecare proprietate obligatorie și asistivă lasă două sau mai multe obiecte să pară identice - de exemplu, trei casete de selectare cu același nume, clasă și etichetă. Exact pentru această situație UFT se retrage pe un identificator ordinal, o valoare de rezervă care clasifică obiectele altfel identice în funcție de poziția lor, în loc de proprietățile lor.
| Identificator ordinal | Proprietatea | Comandă atribuită | Se aplică la |
|---|---|---|---|
| index | index | Ordinea de apariție a obiectului în codul sursă, începând de la 0 | Orice clasă de obiecte |
| Locație | Locație | De sus în jos, apoi de la stânga la dreapta pe ecran, începând de la 0 | Orice clasă de obiecte |
| Timpul creației | CreationTime | Ordinul în care a fost deschisă fereastra browserului, începând de la 0 | Numai obiecte de browser |
UFT învață un identificator ordinal doar atunci când proprietățile obligatorii și asistive nu pot separa cu adevărat două obiecte, deoarece valoarea este relativă și se poate schimba dacă aspectul paginii se modifică, chiar dacă obiectul în sine nu s-a schimbat. Fragmentul VBScript de mai jos folosește Index pentru a face clic pe al doilea dintre cele două linkuri cu nume identice.
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
Valorile Index și Locație sunt specifice clasei de obiecte numite în instrucțiune, deci Index:=3 pe un WebEdit caută doar printre obiectele WebEdit, în timp ce aceeași valoare pe un WebElement generic contează pentru fiecare obiect web de pe pagină, indiferent de tip.
Unde se potrivește identificarea inteligentă
Identificarea obiectelor în UFT nu se oprește la descrierea învățată. Când nu se poate găsi o potrivire unică, UFT parcurge procesul într-o ordine fixă: verifică mai întâi proprietățile obligatorii și asistive învățate, apoi orice identificator vizual al relației, apoi Identificare inteligentă dacă mecanismul respectiv este activat pentru clasă și numai ca ultimă soluție, un identificator ordinar.
Identificarea Inteligentă se situează în mod deliberat între descrierea învățată și identificatorul ordinal. Reconstruiește o listă de candidați folosind proprietățile de bază ale unei clase și o restrânge cu unele opționale, astfel încât poate recupera adesea un obiect a cărui descriere învățată a fost defectă - de exemplu, un buton redenumit - fără a atinge vreodată Depozitul de Obiecte. Deoarece acest pas suplimentar de căutare costă timp, majoritatea echipelor îl activează pentru clasele fragile la identificare și se bazează pe identificatori ordinali doar acolo unde poziția este cu adevărat singurul diferențiator rămas, cum ar fi o serie de butoane radio neetichetate.


