Descriptživo programiranje u QTP/UFTDinamičko i statično
⚡ Pametni sažetak
Descriptživo programiranje omogućuje QTP or UFT Jedna naredba sadrži sam opis objekta, kao parove vrijednosti svojstava ili kao Descriptionski objekt, tako da se korak izvršava čak i kada objekt nikada nije pohranjen u repozitoriju objekata.
Što je Descriptive Programiranje?
Descriptive programiranje koristi se za izvršavanje operacija na objektu u AUT-u čija definicija nije pohranjena u Repozitorij objekataPomoću ovog mehanizma možete zaobići identifikaciju iz repozitorija objekata i dostaviti objekt Description u samoj izjavi.
Naziv objekta se jednostavno koristi za mapiranje objekta u skripti s njegovim opisom u repozitoriju objekata. To znači da ako promijenite naziv objekta i u svojoj skripti i u repozitoriju objekata, skripta bi se i dalje trebala izvršavati. Pogledajte sljedeći video o ovom konceptu.
Kliknite ovdje ako video nije dostupan
Video vijesti
- Izbriši objekt Descriptiona okvira WinEdit za ime agenta iz spremišta objekata. Ako ponovno pokrenete test, neće uspjeti jer ne može prepoznati objekt. Ispitajmo razlog zašto skripta ne uspijeva
- Tijekom vremena izvođenja, UFT Jedan identificira operaciju koja se izvodi na WinEdit okviru i Objekt Description u repozitoriju objekata pohranjen je kao Naziv agenta. Koristi ovo ime za track objektu u repozitoriju objekata. Za roditelja ne možete imati dva podređena objekta s istim imenom, pa QTP jedinstveno mapira objekt u repozitoriju. Zatim koristi pohranjeni opis u repozitoriju objekata, zamjenjuje naziv opisom i koristi rezultirajuću naredbu za identifikaciju objekta u testiranoj aplikaciji.
- Budući da smo u našem slučaju potpuno izbrisali ovaj opis objekta, skripta ne uspijeva
- Ali što ako, umjesto QTP zamjenjujući opis objekta, vi kao tester izravno navodite opise objekata u svom skriptu? Ovo nije ništa drugo nego „Descriptive programiranje”
Ta jedna promjena odgovornosti je ono što implementiraju dva donja oblika, a svaki oblik odgovara drugačijoj vrsti skripte.
Vrste Descriptive Programiranje
Možete koristiti Descriptive programiranje na dva načina
- statički
- Dinamičan
statički Descriptive Programiranje
U statičkoj metodi, za identifikaciju objekta, specificirate svojstvo objekta u sljedećem formatu
property:=values,
Ovaj format se naziva par vrijednosti svojstva i stavlja se u navodnike. U cijelosti napisana, statička izjava izgleda ovako:
TestObject("PropertyName1:=PropertyValue1", "PropertyName2:=PropertyValue2").Method
Ako vaš objekt koristi više opisa za identifikaciju, možete ih navesti zarezima
Dakle, u našem slučaju, opis za ime agenta postaje
"nativeclass:=Edit", "attached text:=Agent Name:"
Statički opisi se čitaju u trenutku izvođenja naredbe, što ih čini idealnim za jednokratne korake i brze popravke skripte koju ne želite ponovno snimati.
Dinamičan Descriptive Programiranje
Drugi način izvođenja iste radnje je korištenje Dynamic Descriptive programiranje
U slučaju da vaša skripta više puta koristi kandidata za deskriptivni programski objekt, bit će vrlo zamorno navesti sve parove vrijednosti svojstva za svaku izjavu
U takvim slučajevima možete koristiti Descriptionska klasa koju pruža QTP
Sintaksa za stvaranje objekta opisa je
Set MyDescription = Description.Create() MyDescription("property").Value = "property-value"
Ovo je dinamička metoda
Ispunjavanje tog objekta svojstvima imena agenta korištenim gore daje potpun, ponovno upotrebljiv opis:
Dim oDesc Set oDesc = Description.Create() oDesc("nativeclass").Value = "Edit" oDesc("attached text").Value = "Agent Name:"
Varijabla Opis sada se može proslijediti bilo kojoj naredbi kojoj je potreban taj objekt, tako da jedno uređivanje ažurira svaki korak koji ga koristi.
Statički vs. dinamički DescriptŽivo programiranje: Kada koristiti koji
Oba oblika daju isti opis tijekom izvođenja, tako da je izbor stvar održavanja, a ne mogućnosti.
| Kriteriji | Statički (ugrađeni) | Dinamičko (Descriptionski objekt) |
|---|---|---|
| Kako je napisan opis | Parovi vrijednosti svojstava upisani unutar poziva testnog objekta | Svojstva dodana objektu stvorenom pomoću Description.Create() |
| ponovo upotrijebiti | Ponavlja se u svakoj izjavi kojoj je potreban objekt | Pohranjeno u jednoj varijabli i prosljeđuje se gdje god je potrebno |
| čitljivost | Kratke izjave ostaju čitljive; duge postaju nezgrapne | Dodatne linije za postavljanje, ali sama izjava ostaje kratka |
| Promjene u vremenu izvođenja | Vrijednosti su fiksne osim ako nisu spojene iz varijabli | Vrijednosti svojstava mogu se preraspodijeliti prije svake upotrebe |
| Radi s ChildObjects | Ne, argument filtera mora biti Descriptionski objekt | Da, ovo je potreban obrazac |
| Najprikladniji za | Jedan ili dva koraka na objektu koji nije u repozitoriju | Objekti koji se više puta koriste ili kolekcije dohvaćene tijekom izvođenja |
Zašto koristiti Descriptive Programiranje?
Transkript u nastavku prati video s prikazom stvarnog scenarija u kojem se broj objekata ne može unaprijed znati.
Video zapis
- Pitanje od milijun dolara je zašto koristiti DP kada proces identifikacije objekta obavlja... QTP
- Pretpostavimo da vam je dodijeljeno testiranje portala za zapošljavanje. U portal unosite upit za pretraživanje, a test očekuje da odaberete sve dostupne poslove i kliknete Prijavi posao.
- No broj prikazanih poslova ovisit će o upitu za pretraživanje i dostupnim poslovima u trenutku izvršavanja skripte, a ne postoji način da se unaprijed predvidi broj prikazanih poslova.
- U takvim slučajevima možete koristiti deskriptivno programiranje. Čak i ako ne znate broj i nazive potvrdnih okvira, znate klasu za objekte kao „WebCheckBox"
- Možete koristiti Metoda ChildObjects za vraćanje objekata koji pripadaju određenom roditelju
- Redak koda poput –
Set allObjects = Browser("Jobs").Page("QTP").ChildObjects()
vratit će sve podređene objekte za ovu stranicu.
- Ali mi želimo samo WebCheckBox objekti. Da bismo to učinili, možemo stvoriti objekt filtera i postaviti njegovo svojstvo na klasu web potvrdnog okvira, a zatim proslijediti ovaj filter kao argument metodi ChildObjects
- U ovom slučaju vraćaju se samo potvrdni okviri.
- Zatim možete napisati ovakav kod koji pristupa cijeloj kolekciji potvrdnih okvira počevši od nule i postavlja sve potvrdne okvire na UKLJUČENO.
- Zatim možete kliknuti gumb za primjenu kako biste dovršili test
- Vous korištenje pouvez aussi Descriptive Programiranje za pokretanje objekata koje je teško zabilježiti kao što su ploče s automatskim skrivanjem, objekti s promjenjivom hijerarhijom, ugniježđeni unutarnji objekti, podizbornici.
- Također možete raditi napredne manipulacije nizovima pomoću deskriptivnog programiranja
- U kombinaciji s indeksnim svojstvom, deskriptivno programiranje može biti vrlo korisno u identificiranju teških objekata.
- Ako koristite programski opis za objekt u hijerarhiji objekata, morat ćete koristiti deskriptivno programiranje za sljedeće podređene objekte.
- Na primjer, ako je za objekt Page korišteno deskriptivno programiranje, ali je sljedeći podređeni objekt WinEdit došao iz repozitorija objekata, izjava je netočna.
- Naprotiv, kada se deskriptivno programiranje koristi i za objekte Page i za objekte WinEdit, tvrdnja je točna
Napisano, filter i petlja opisana u transkriptu izgledaju ovako:
Dim oFilter, allCheckBoxes, i Set oFilter = Description.Create() oFilter("micclass").Value = "WebCheckBox" Set allCheckBoxes = Browser("Jobs").Page("QTP").ChildObjects(oFilter) For i = 0 To allCheckBoxes.Count - 1 allCheckBoxes(i).Set "ON" Next
Kolekcija se temelji na nuli, zbog čega petlja završava na Broj – 1Budući da se filter procjenjuje prilikom izvršavanja retka, isti kod radi bez obzira vraća li pretraga tri ili trideset poslova.
Regularni izrazi, ordinalni identifikatori i uobičajene zamke
DescriptIvno programiranje se ponaša na dva načina koja iznenađuju većinu ljudi prvi put kada naredba ne uspije bez vidljivog razloga.
1) Svaka vrijednost svojstva tretira se kao regularni izraz. Natpis kao što je Ukupno (u USD) stoga se ne podudara jer su zagrade sintaksa regularnih izraza. Izbjegavajte ih obrnutom kosom crtom ili isključite procjenu regularnih izraza za to svojstvo na Descriptionski objekt:
Set oDesc = Description.Create() oDesc("name").Value = "Total (USD)" oDesc("name").RegularExpression = False
2) Ordinalni identifikatori prekidaju veze. Kada opis i dalje odgovara više od jednog objekta, dodajte indeks, lokacija or vrijeme stvaranja kao dodatno svojstvo. Broj indeksa počinje od nule:
WebEdit("name:=userName", "html tag:=INPUT", "index:=0").Set "guru99" WebEdit("name:=userName", "html tag:=INPUT", "index:=1").Set "guru99"
Prije početka otklanjanja pogrešaka u aplikaciji vrijedi provjeriti još tri zamke:
- Koristiti mikroklasa, a ne oznaka Naziv razreda prikazano u Object Spy. Prikazani naziv nije valjano svojstvo u opisu.
- Nazivi svojstava ne razlikuju velika i mala slova, ali moraju se napisati točno onako kako ih tehnologija prijavljuje, uključujući razmak u priloženi tekst i html oznaka.
- DescriptAktivno programiranje zaobilazi repozitorij; ne poboljšava prepoznavanje objekata. Ako se ne učita ispravan dodatak, nikakav opis neće omogućiti identifikaciju objekta.
