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.

  • 🎯 Ultima soluție: UFT adaugă un identificator ordinal numai după ce proprietățile obligatorii și asistive nu reușesc să facă o descriere unică.
  • 🔢 Index: Numbers obiecte din aceeași clasă în ordinea codului sursă, începând de la 0, deci index:=3 vizează a patra potrivire.
  • 📍 Locație: Numbers obiectele în funcție de poziția ecranului în interiorul ferestrei, cadrului sau dialogului, de sus în jos și de la stânga la dreapta.
  • 🕒 CreationTime: Se aplică numai obiectelor Browser și înregistrează ordinea în care a fost deschisă fiecare instanță de browser.
  • 🗂️ Identificarea obiectului: Tipul ordinal implicit pentru fiecare clasă de obiecte de testare este editabil în Instrumente > Identificare obiecte.
  • ⌨️ Descriptprogramare activă: Transmite indexul, locația sau ora de creație ca o proprietate obișnuită în șirul de descriere a obiectului.
  • ⚠️ Fragilitate: Valorile ordinale se schimbă ori de câte ori se modifică aspectul paginii, așa că tratați-le ca pe o soluție temporară, niciodată ca pe o alegere de design.

Identificator ordinal în QTP/UFT explicat cu Index, Locație și CreationTime

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.

Setarea identificatorului ordinal în QTP/UFT Fereastra de identificare a obiectelor

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:

  1. Bazat pe index
  2. Bazat pe locație
  3. 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.

  1. Operatii Deschise UFT și selectați Instrumente > Identificare obiecte.
  2. Alegeți mediul, de exemplu Web sau Standard Windows, din meniul derulant Mediu.
  3. Selectați clasa obiectului de testare pe care doriți să o modificați, cum ar fi WebEdit sau WinButton.
  4. În Identificator ordinal secțiune, selectați Index, Locație, Ora creării sau Niciunul.
  5. Clic OK și să reînvețe obiectul astfel încât noua valoare ordinală să fie captată.
  6. 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

Valoarea implicită variază în funcție de clasă. Majoritatea obiectelor de test web, cum ar fi WebEdit și WebButton, au ca implicit valoarea Index, obiectele Browser au ca implicit valoarea CreationTime, iar Standard. Windows Clasele au implicit valoarea Locație. Fiecare valoare implicită este vizibilă și editabilă în fereastra Identificare obiect.

Identificarea inteligentă rulează prima. UFT încearcă descrierea învățată, apoi Identificarea Inteligentă dacă este activată pentru clasă și revine la identificatorul ordinal doar atunci când ambele metode nu reușesc să producă un singur obiect potrivit.

Da. Setați meniul derulant Identificator ordinal la Niciunul pentru clasă în fereastra Identificare obiect. UFT apoi raportează o eroare de identificare în loc să ghicească, ceea ce este mai sigur pentru suitele în care un clic greșit pe un obiect ar putea corupe datele de testare.

Puțin. UFT trebuie să enumere fiecare obiect al clasei înainte de a putea număra până la poziția solicitată, astfel încât paginile cu sute de controale similare necesită mai mult timp pentru a fi rezolvate decât o descriere construită pe un nume sau ID unic.

Da. Identificare bazată pe inteligență artificială în prezent UFT Se eliberează controalele de potrivire după aspectul vizual și textul etichetei, mai degrabă decât după poziția markup-ului, astfel încât un câmp poate fi localizat după cum arată chiar și atunci când valorile indexului din jur se schimbă.

Un asistent cu inteligență artificială poate scana un export dintr-un depozit, poate semnala fiecare descriere care conține index, locație sau ora creării și poate propune înlocuiri din atributele HTML capturate. O ființă umană trebuie să verifice fiecare sugestie în aplicația live înainte de a o valida.

Clic aici dacă videoclipul nu este accesibil

Rezumați această postare cu: