Identificator ordinal în QTP/UFTExemplu de identificare a obiectelor
⚡ Rezumat inteligent
Identificator ordinal în QTP/UFT este factorul de departajare UFT se aplică atunci când proprietățile obligatorii și asistive se potrivesc în continuare cu mai multe obiecte, utilizând valorile Index, Location sau CreationTime pentru a selecta un singur obiect unic.
Ce este un identificator ordinal în QTP/UFT?
An Identificator ordinal este o proprietate numerică care UFT (anterior QTP) se adaugă la descrierea unui obiect atunci când proprietățile obligatorii și asistive capturate în timpul unei sesiuni de înregistrare nu sunt suficiente pentru a identifica obiectul în mod unic. În loc să eșueze, instrumentul apelează la un contor care spune, practic, „ia al treilea obiect din această clasă”.
În mod implicit, există un tip de identificator ordinal pentru fiecare clasă de obiecte de testare. Un WebEdit este numerotat diferit față de un WinButton, iar un Browser este numerotat din nou diferit. Puteți vizualiza sau modifica identificatorul ordinal implicit pentru o clasă în fereastra Identificare obiect.
După cum se arată în captura de ecran de mai sus, meniul derulant Identificator ordinal se află în partea de jos a dialogului Identificare obiect, sub listele de proprietăți obligatorii și asistive. Această poziție nu este întâmplătoare: reflectă ordinea în care UFT consultă de fapt cele trei grupuri.
Există trei tipuri de identificatori ordinali în UFT:
- Bazat pe index
- Bazat pe locație
- Timpul creației
De ce UFT Folosește identificatori ordinali doar ca ultimă soluție
Identificarea obiectelor în UFT rulează în cascadă. Proprietățile obligatorii sunt învățate primele. Dacă nu produc nicio potrivire, proprietățile asistive sunt adăugate una câte una până când descrierea este unică. Numai atunci când ambele grupuri sunt epuizate, UFT atașați un identificator ordinal, iar în timpul execuției este consultat mecanismul de Identificare Inteligentă înainte ca valoarea ordinală să fie considerată de încredere.
Motivul acestei clasificări este stabilitatea. Proprietățile obligatorii și asistive descriu ceea ce un obiect este: numele său, eticheta sa HTML, tipul său, eticheta sa. Un identificator ordinal descrie doar Unde obiectul se afla întâmplător în momentul înregistrării. Orice modificare a paginii modifică numărul:
- Un dezvoltator introduce un câmp ascuns deasupra celui pe care îl automatizați.
- Un banner promoțional adaugă două linkuri suplimentare în antet.
- Un layout responsiv reorganizează formularul din două coloane într-una singură.
- O fereastră pop-up de browser se deschide mai devreme decât în timpul rulării înregistrate.
Niciuna dintre aceste modificări nu întrerupe o descriere construită pe baza unui nume sau a unui ID, dar fiecare dintre ele modifică în mod silențios fiecare valoare a indexului și a locației de pe pagină. Acesta este motivul pentru care inginerii experimentați tratează un identificator ordinal ca pe un semnal că descrierea obiectului necesită îmbunătățiri, nu ca pe o soluție finalizată. Același principiu se aplică în toate testarea automatizării cadre în general, inclusiv strategia de localizare în Selenium.
💡 Sfat: Înainte de a accepta un identificator ordinal, deschideți obiectul în Object Spy și căutați un atribut personalizat stabil. Adăugarea acelui atribut la lista de proprietăți asistive pentru clasă elimină adesea necesitatea unui identificator ordinal pentru fiecare obiect viitor de acel tip.
Tipuri de identificatori ordinali în UFT/QTP
Bazat pe index
- Când se utilizează un identificator ordinal bazat pe index, UFT atribuie o valoare index proprietatea obiectului în timpul înregistrării.
- Valoarea se bazează pe ordinea în care obiectul apare în codul sursă, nu pe ecran.
- Prima apariție are valoarea 0.
- Valorile proprietăților indexului sunt specifice obiectului, așadar fiecare clasă de obiecte de testare este numărată separat.
- Prin urmare, dacă utilizați index:=3 pentru a descrie un obiect de test WebEdit, UFT caută al patrulea obiect WebEdit de pe pagină.
- În mod similar, dacă utilizați index:=1 pentru a descrie un obiect de test WebButton, UFT caută al doilea obiect WebButton de pe pagină.
Bazat pe locație
- Când se utilizează un identificator ordinal bazat pe locație, UFT atribuie o valoare locaţie proprietatea obiectului de a-l identifica în mod unic.
- Valoarea se bazează pe ordinea în care apare obiectul în fereastră, cadru sau casetă de dialog, în raport cu alte obiecte cu proprietăți identice.
- Prima apariție a obiectului este 0.
- Valorile sunt atribuite în coloane, de sus în jos și apoi de la stânga la dreapta.
- Locația este identificatorul ordinal implicit pentru majoritatea funcțiilor Standard Windows clase de obiecte de testare, unde aspectul vizual este mai stabil decât ordinea de marcare.
Timpul creației
- Când se utilizează identificatorul ordinal al momentului creării, UFT atribuie o valoare timpul creației proprietate a unui obiect de browser.
- Acest identificator este disponibil numai pentru mediul Web și numai pentru obiectele de testare ale browserului.
- Valoarea indică ordinea în care a fost deschis browserul în raport cu alte browsere deschise.
- Primul browser deschis în timpul rulării primește creationtime:=0, iar browserele următoare primesc 1, 2, 3 și așa mai departe.
- Dacă un browser este închis, browserele rămase își păstrează valorile originale în loc să fie renumerotate.
Index vs. Locație vs. Momentul creării: Tabel comparativ
Cei trei identificatori răspund la trei întrebări diferite, iar alegerea celui greșit este o cauză frecventă a defecțiunilor intermitente.
| Aspect | index | Locație | CreationTime |
|---|---|---|---|
| Numele proprietatii | index | locaţie | timpul creației |
| Baza de comandă | Ordinea în codul sursă / ierarhia obiectelor | Poziția ecranului în interiorul ferestrei, cadrului sau dialogului | Ordinea în care s-au deschis instanțele browserului |
| Regula de numărare | Secvențial, per clasă de obiecte de testare | Coloane, de sus în jos, apoi de la stânga la dreapta | Secvențial, per instanță de browser |
| Prima valoare | 0 | 0 | 0 |
| Se aplică la | Web și Windows clase | În principal standard Windows clase | Numai obiecte de browser |
| Se întrerupe când | Modificări ale ordinii de marcare | Aspectul este repoziționat sau redimensionat | Windows deschis într-o secvență diferită |
| Cel mai bine folosit pentru | Controale repetitive de tip grilă sau tabel | Formulare desktop vechi cu aspect fix | Fluxuri web cu mai multe ferestre, cum ar fi ferestrele pop-up pentru plăți |
Cum se setează identificatorul ordinal în depozitul de obiecte
Identificatorul ordinal este configurat pentru fiecare clasă de obiecte de testare și se aplică automat fiecărui obiect din acea clasă care UFT învață ulterior. Obiectele existente deja în repozitoriu nu sunt actualizate retroactiv.
- Operatii Deschise UFT și selectați Instrumente > Identificare obiecte.
- Alegeți mediul, de exemplu Web sau Standard Windows, din meniul derulant Mediu.
- Selectați clasa obiectului de testare pe care doriți să o modificați, cum ar fi WebEdit sau WinButton.
- În Identificator ordinal secțiune, selectați Index, Locație, Ora creării sau Niciunul.
- Clic OK și să reînvețe obiectul astfel încât noua valoare ordinală să fie captată.
- Deschideți Repozitoriul de obiecte, selectați obiectul și confirmați că proprietatea ordinală apare acum în lista de descrieri.
selectarea Nici unul dezactivează complet opțiunea de rezervă pentru acea clasă. UFT va genera apoi o eroare de identificare în loc de o presupunere, acesta fiind adesea comportamentul dorit într-o suită în care identificarea greșită silențioasă este mai dăunătoare decât un eșec complet. Înregistrați-vă așteptările într-un document bine scris caz de testare face acest compromis explicit pentru întreaga echipă.
⚠️ Atenție: Schimbarea identificatorului ordinal pentru o clasă este o setare la nivel de mașină, nu una la nivel de test. Dacă nu este exportată și partajată, scripturile care sunt transmise pe mașina dvs. pot eșua pe mașina unui coleg sau pe agentul de compilare.
Cum se utilizează identificatorii ordinali în Descriptprogramare ive
În programarea descriptivă nu există un dialog de identificare a obiectelor. Numeralul ordinal este scris direct în șirul de descriere, exact ca orice alt nume de proprietate, și are întotdeauna baza zero.
' Ordinals are zero based: index:=3 is the FOURTH WebEdit on the page Set objPage = Browser("Guru99 Bank").Page("Guru99 Bank") objPage.WebEdit("index:=3").Set "9999999999" Print "Filled WebEdit occurrence #" & (3 + 1) ' Location is counted top to bottom, then left to right objPage.WebButton("location:=1").Click Print "Clicked WebButton occurrence #" & (1 + 1) ' CreationTime works only on Browser objects Print "Switching to browser opened at position #" & (1 + 1) Browser("creationtime:=1").Sync
ieșire:
Filled WebEdit occurrence #4 Clicked WebButton occurrence #2 Switching to browser opened at position #2
Un model mai sigur este de a combina proprietățile reale cu ChildObjects deci ordinal este validat înainte de a fi utilizat. Exemplul de mai jos presupune o pagină care conține cinci obiecte WebEdit potrivite și un index de 9.
Dim oDesc, oChildren, intIndex Set oDesc = Description.Create() oDesc("micclass").Value = "WebEdit" oDesc("html tag").Value = "INPUT" Set oChildren = objPage.ChildObjects(oDesc) intIndex = 9 If intIndex < oChildren.Count Then oChildren(intIndex).Set "Guru99" Else Print "Index " & intIndex & " is out of range; only " & oChildren.Count & " objects match" End If
ieșire:
Index 9 is out of range; only 5 objects match
Această protecție transformă o eroare de execuție inutilă de tipul „Nu se poate identifica obiectul” într-un mesaj lizibil, important atunci când rezultatele sunt publicate pentru un defect. tracker sau la HP ALM integrat cu UFT.
Greșeli frecvente la utilizarea identificatorilor ordinali
Majoritatea defectelor legate de ordinar tracînapoi la un mic set de erori recurente.
- Numărând de la 1. Fiecare identificator ordinal începe de la 0. Scrierea index:=1 pentru primul câmp este cea mai frecventă greșeală și produce o eroare de tip „off-by-one” care pare a fi o problemă de sincronizare.
- Index confuz cu locația. Indexul urmează codul sursă; locația urmează ecranul. Pe o pagină în care CSS reordonează elementele, cele două valori diferă și se schimbă.ping aceștia vizează în tăcere controlul greșit.
- Utilizarea CreationTime în afara mediului web. Proprietatea există doar pe obiectele Browser. Aplicarea ei la un obiect Page, Frame sau Window generează o eroare de tip „proprietate neacceptată”.
- Codarea hard a unui număr ordinal într-o funcție partajată. O funcție reutilizabilă care presupune index:=2 devine inutilizabilă în momentul în care un al doilea ecran cu un aspect diferit o apelează.
- Lăsarea numerelor ordinale în depozit după stabilizarea aplicației. După ce dezvoltatorii adaugă ID-uri stabile, revizitează obiectele și înlocuiesc ordinalul cu noua proprietate.
- Bazându-se pe numere ordinale în interiorul buclelor peste grile. Prefera
ChildObjects, care returnează o colecție live, astfel încât numărătoarea reflectă pagina curentă și nu pe cea înregistrată.
Resurse
Descărcați paginile web folosite în tutorialul de mai sus pentru auto-exersare
Identificatorii ordinali sunt o mică parte a modelului de identificare a obiectelor. Pentru a vedea cum se încadrează în fluxul de lucru mai larg, continuați cu modelul complet. QTP/UFT seria de antrenament, revizuiți elementele fundamentale din testare software, aflați cum sunt gestionate rezultatele în Tutorial HP ALMși comparați strategiile de localizare cu Selenium tutorial.
Întrebări frecvente
Clic aici dacă videoclipul nu este accesibil


