Ordinalni identifikator u QTP/UFTPrimjer identifikacije objekta

⚡ Pametni sažetak

Ordinalni identifikator u QTP/UFT je presuda u razrješenju UFT primjenjuje se kada obavezna i pomoćna svojstva i dalje odgovaraju više od jednog objekta, koristeći vrijednosti Index, Location ili CreationTime za odabir jednog jedinstvenog objekta.

  • 🎯 Posljednja opcija: UFT dodaje ordinalni identifikator tek nakon što obavezna i pomoćna svojstva ne uspiju učiniti opis jedinstvenim.
  • 🔢 Indeks: Numbers objekti iste klase prema redoslijedu izvornog koda, počevši od 0, pa index:=3 cilja četvrto podudaranje.
  • ???? Mjesto: Numbers objekte prema položaju na zaslonu unutar prozora, okvira ili dijaloga, od vrha prema dnu i slijeva nadesno.
  • 🕒 Vrijeme stvaranja: Odnosi se samo na objekte preglednika i bilježi redoslijed kojim je svaka instanca preglednika otvorena.
  • 🗂️ Identifikacija objekta: Zadani ordinalni tip za svaku klasu testnog objekta može se uređivati ​​pod Alati > Identifikacija objekta.
  • ⌨️ Descriptživo programiranje: Proslijedite indeks, lokaciju ili vrijeme kreiranja kao obično svojstvo unutar niza opisa objekta.
  • ⚠️ Krhkost: Ordinalne vrijednosti se mijenjaju kad god se promijeni izgled stranice, stoga ih tretirajte kao privremeno rješenje, nikada kao dizajnerski izbor.

Ordinalni identifikator u QTP/UFT objašnjeno pomoću indeksa, lokacije i vremena stvaranja

Što je ordinalni identifikator u QTP/UFT?

An Redni identifikator je numeričko svojstvo koje UFT (ranije QTP) dodaje opisu objekta kada obavezna i pomoćna svojstva snimljena tijekom sesije snimanja nisu dovoljna za jedinstvenu identifikaciju objekta. Umjesto da ne uspije, alat se vraća na brojač koji zapravo kaže „uzmi treći objekt ove klase“.

Prema zadanim postavkama, za svaku klasu testnog objekta postoji tip ordinalnog identifikatora. WebEdit je numeriran drugačije od WinButtona, a Browser je također numeriran drugačije. Zadani ordinalni identifikator za klasu možete pregledati ili izmijeniti u prozoru Identifikacija objekta.

Postavka ordinalnog identifikatora u QTP/UFT Prozor za identifikaciju objekta

Kao što je prikazano na gornjoj snimci zaslona, ​​padajući izbornik Ordinalni identifikator nalazi se na dnu dijaloga Identifikacija objekta, ispod popisa obveznih i pomoćnih svojstava. Taj položaj nije slučajan: odražava redoslijed kojim UFT zapravo konzultira tri skupine.

Postoje tri vrste ordinalnih identifikatora u UFT:

  1. Na temelju indeksa
  2. Na temelju lokacije
  3. Vrijeme stvaranja

Zašto UFT Koristi ordinalne identifikatore samo kao krajnje rješenje

Identifikacija objekta u UFT izvodi se kaskadno. Prvo se uče obavezna svojstva. Ako ne daju niti jedno podudaranje, pomoćna svojstva se dodaju jedno po jedno dok opis ne postane jedinstven. Tek kada se obje skupine iscrpe, UFT priložite ordinalni identifikator, a tijekom izvođenja konzultira se mehanizam pametne identifikacije prije nego što se ordinalna vrijednost smatra pouzdanom.

Razlog za to rangiranje je stabilnost. Obavezna i pomoćna svojstva opisuju što objekt je: njegovo ime, njegova HTML oznaka, njegov tip, njegova oznaka. Ordinalni identifikator opisuje samo gdje objekt se slučajno nalazio u trenutku snimanja. Sve što promijeni stranicu mijenja i broj:

  • Programer ubacuje skriveno polje iznad onog koje automatizirate.
  • Promotivni banner dodaje dvije dodatne poveznice u zaglavlje.
  • Responzivni izgled preoblikuje obrazac iz dva stupca u jedan.
  • Skočni preglednik otvara se ranije nego tijekom snimljenog trčanja.

Nijedna od ovih promjena ne narušava opis izgrađen na imenu ili ID-u, ali svaka od njih tiho mijenja svaku vrijednost indeksa i lokacije na stranici. Zato iskusni inženjeri tretiraju ordinalni identifikator kao signal da opis objekta treba doraditi, a ne kao gotovo rješenje. Isti princip vrijedi i za ispitivanje automatizacije okviri općenito, uključujući strategiju lokatora u Selenium.

💡 Savjet: Prije prihvaćanja ordinalnog identifikatora, otvorite objekt u Object Spyu i potražite stabilan prilagođeni atribut. Dodavanje tog atributa na popis pomoćnih svojstava za klasu često uklanja potrebu za ordinalnim brojem na svakom budućem objektu te vrste.

Vrste ordinalnih identifikatora u UFT/QTP

Na temelju indeksa

  • Kada se koristi ordinalni identifikator temeljen na indeksu, UFT dodjeljuje vrijednost indeks svojstvo objekta tijekom snimanja.
  • Vrijednost se temelji na redoslijedu kojim se objekt pojavljuje unutar izvornog koda, a ne na ekranu.
  • Prvo pojavljivanje ima vrijednost 0.
  • Vrijednosti svojstava indeksa specifične su za objekt, tako da se svaka klasa testnog objekta broji zasebno.
  • Stoga, ako koristite index:=3 za opis testnog objekta WebEdita, UFT traži četvrti WebEdit objekt na stranici.
  • Slično tome, ako koristite index:=1 za opis testnog objekta WebButton, UFT traži drugi WebButton objekt na stranici.

Na temelju lokacije

  • Kada se koristi ordinalni identifikator temeljen na lokaciji, UFT dodjeljuje vrijednost lokacija svojstvo objekta da ga jedinstveno identificira.
  • Vrijednost se temelji na redoslijedu u kojem se objekt pojavljuje unutar prozora, okvira ili dijaloškog okvira, u odnosu na druge objekte s identičnim svojstvima.
  • Prvo pojavljivanje objekta je 0.
  • Vrijednosti se dodjeljuju u stupcima, od vrha prema dnu, a zatim s lijeva na desno.
  • Lokacija je zadani ordinalni identifikator za većinu standardnih Windows klase testnih objekata, gdje je vizualni raspored stabilniji od redoslijeda označavanja.

Vrijeme stvaranja

  • Kada se koristi ordinalni identifikator vremena stvaranja, UFT dodjeljuje vrijednost vrijeme stvaranja svojstvo objekta preglednika.
  • Ovaj identifikator dostupan je samo za web okruženje i samo za testne objekte preglednika.
  • Vrijednost označava redoslijed kojim je preglednik otvoren u odnosu na druge otvorene preglednike.
  • Prvi preglednik otvoren tijekom izvođenja prima creationtime:=0, a sljedeći preglednici primaju 1, 2, 3 i tako dalje.
  • Ako se preglednik zatvori, preostali preglednici zadržavaju svoje izvorne vrijednosti umjesto da se prenumeriraju.

Indeks vs. Lokacija vs. Vrijeme stvaranja: Tablica usporedbe

Tri identifikatora odgovaraju na tri različita pitanja, a odabir pogrešnog čest je uzrok povremenih kvarova.

Aspekt indeks Lokacija Vrijeme stvaranja
Naziv imovine indeks lokacija vrijeme stvaranja
Osnova naručivanja Redoslijed u hijerarhiji izvornog koda / objekata Položaj zaslona unutar prozora, okvira ili dijaloga Redoslijed kojim su se otvarale instance preglednika
Pravilo brojanja Sekvencijalno, po klasi testnog objekta Stupci, od vrha prema dnu, a zatim slijeva nadesno Sekvencijalno, po instanci preglednika
Prva vrijednost 0 0 0
Odnosi se na Web i Windows Nastava Uglavnom standardno Windows Nastava Samo objekti preglednika
Prekidi kada Promjene redoslijeda označavanja Izgled je premješten ili promijenjena mu je veličina Windows otvoriti u drugom redoslijedu
Najbolje koristiti za Ponavljajuće kontrole mreže ili tablice Zastarjeli obrasci za stolna računala s fiksnim rasporedom Višeprozorski web tokovi kao što su skočni prozori za plaćanje

Kako postaviti ordinalni identifikator u repozitoriju objekata

Ordinalni identifikator konfigurira se po klasi testnog objekta i automatski se primjenjuje na svaki objekt te klase koji UFT uči naknadno. Postojeći objekti koji se već nalaze u repozitoriju ne ažuriraju se retroaktivno.

  1. Otvoren UFT i odaberite Alati > Identifikacija objekta.
  2. Odaberite okruženje, na primjer Web ili Standardno Windows, iz padajućeg izbornika Okolina.
  3. Odaberite klasu testnog objekta koju želite promijeniti, kao što je WebEdit ili WinButton.
  4. u Ordinalni identifikator U odjeljku odaberite Indeks, Lokacija, Vrijeme stvaranja ili Ništa.
  5. Kliknite OK i ponovno naučiti objekt tako da se uhvati nova ordinalna vrijednost.
  6. Otvorite spremište objekata, odaberite objekt i potvrdite da se ordinalno svojstvo sada pojavljuje u popisu opisa.

Odabirom nijedan potpuno onemogućuje zamjensku opciju za tu klasu. UFT tada će izazvati pogrešku u identifikaciji umjesto nagađanja, što je često ponašanje koje želite u paketu gdje je tiha pogrešna identifikacija štetnija od čistog neuspjeha. Zabilježite svoja očekivanja u dobro napisanom testni slučaj taj kompromis čini eksplicitnim za cijeli tim.

⚠️ Upozorenje: Promjena ordinalnog identifikatora za klasu je postavka na razini stroja, a ne na razini testiranja. Ako se ne izveze i ne podijeli, skripte koje se prenose na vašem računalu mogu propasti na računalu kolege ili na agentu za izgradnju.

Kako koristiti ordinalne identifikatore u Descriptive Programiranje

U deskriptivnom programiranju ne postoji dijalog za identifikaciju objekta. Ordinalni broj se upisuje izravno u opisni niz, baš kao i bilo koji drugi naziv svojstva, i uvijek je baziran na nuli.

' 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

Izlaz:

Filled WebEdit occurrence #4
Clicked WebButton occurrence #2
Switching to browser opened at position #2

Sigurniji obrazac je kombinirati stvarna svojstva s ChildObjects pa se ordinal provjerava prije upotrebe. Primjer u nastavku pretpostavlja stranicu koja sadrži pet odgovarajućih WebEdit objekata i indeks 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

Izlaz:

Index 9 is out of range; only 5 objects match

Ovaj zaštitnik pretvara beskorisnu pogrešku "Nije moguće identificirati objekt" u čitljivu poruku, što je važno kada se rezultati objavljuju za defekt. tracker ili do HP ALM integriran s UFT.

Uobičajene pogreške pri korištenju ordinalnih identifikatora

Većina ordinalnih nedostataka tracnatrag na mali skup ponavljajućih pogrešaka.

  • Brojeći od 1. Svaki ordinalni identifikator počinje od 0. Pisanje index:=1 za prvo polje je najčešća pogreška i stvara grešku "off-by-one" koja izgleda kao problem s vremenom.
  • Zbunjujući indeks s lokacijom. Indeks slijedi izvorni kod; lokacija slijedi zaslon. Na stranici gdje CSS mijenja redoslijed elemenata, dvije vrijednosti se razlikuju i zamjenjuju.ping tiho ciljaju na pogrešnu kontrolu.
  • Korištenje CreationTime izvan web okruženja. Svojstvo postoji samo na objektima preglednika. Primjena na objekt stranice, okvira ili prozora izbacuje grešku nepodržanog svojstva.
  • Tvrdo kodiranje ordinala u zajedničku funkciju. Funkcija za višekratnu upotrebu koja pretpostavlja index:=2 postaje neupotrebljiva u trenutku kada je pozove drugi ekran s drugačijim rasporedom.
  • Ostavljanje ordinala u repozitoriju nakon stabilizacije aplikacije. Nakon što programeri dodaju stabilne ID-ove, ponovno posjetite objekte i zamijenite ordinal novim svojstvom.
  • Oslanjanje na ordinale unutar petlji preko mreža. preferiraju ChildObjects, koja vraća aktivnu kolekciju, tako da brojač odražava trenutnu stranicu, a ne snimljenu.

Resursi

Preuzmite web-stranice korištene u gornjem vodiču za samostalnu vježbu

Ordinalni identifikatori su samo mali dio modela identifikacije objekata. Da biste vidjeli kako se uklapaju u širi tijek rada, nastavite s cijelim QTP/UFT serija treninga, pregledajte osnove u testiranje softvera, saznajte kako se rezultati upravljaju u HP ALM vodiči usporedite strategije lokatora s Selenium udžbenik.

Pitanja i odgovori

Zadana vrijednost varira ovisno o klasi. Većina web testnih objekata kao što su WebEdit i WebButton zadana je Index, objekti Browsera zadana je CreationTime, a Standard Windows Klase imaju zadanu vrijednost Lokacija. Svaka zadana vrijednost je vidljiva i može se uređivati ​​u prozoru Identifikacija objekta.

Pametna identifikacija se pokreće prva. UFT pokušava s naučenim opisom, zatim s pametnom identifikacijom ako je omogućena za klasu, i vraća se na ordinalni identifikator samo kada oba ne uspiju proizvesti niti jedan odgovarajući objekt.

Da. Postavite padajući izbornik Ordinalni identifikator na Nema za klasu u prozoru Identifikacija objekta. UFT zatim prijavljuje pogrešku identifikacije umjesto nagađanja, što je sigurnije za pakete gdje bi klik na pogrešan objekt mogao oštetiti testne podatke.

Malo. UFT mora nabrojati svaki objekt klase prije nego što može doći do tražene pozicije, pa stranice sa stotinama sličnih kontrola trebaju dulje za rješavanje nego opis izgrađen na jedinstvenom imenu ili ID-u.

Da. Identifikacija temeljena na umjetnoj inteligenciji u trenutnoj UFT Kontrole za oslobađanje podudaranja se pronalaze prema vizualnom izgledu i tekstu oznake, a ne prema položaju oznake, tako da se polje može locirati prema izgledu čak i kada se vrijednosti okolnog indeksa pomaknu.

AI asistent može skenirati izvoz iz repozitorija, označiti svaki opis koji sadrži indeks, lokaciju ili vrijeme kreiranja i predložiti zamjene iz snimljenih HTML atributa. Čovjek i dalje mora provjeriti svaki prijedlog u odnosu na aktivnu aplikaciju prije nego što ga potvrdi.

Kliknite ovdje ako video nije dostupan

Sažmite ovu objavu uz: