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.

  • 🔘 Zaobilazi repozitorij: Opis putuje unutar naredbe, tako da se ime objekta ne mora tražiti tijekom izvođenja.
  • ☑️ Statički oblik: Parovi vrijednosti svojstava napisani u tekstu kao "svojstvo:=vrijednost", odvojeni zarezima unutar poziva testnog objekta.
  • ✅ Dinamički obrazac: Description.Create gradi kolekciju svojstava za višekratnu upotrebu koju mogu dijeliti mnogi izrazi.
  • 🧪 Izgrađeno za nepredvidive objekte: Automatsko skrivanje panela, promjena hijerarhija, ugniježđeni unutarnji objekti i skupovi rezultata nepoznate veličine.
  • 🛠️ ChildObjects se s njim uparuje: A DescriptObjekt ion korišten kao filter vraća samo odgovarajuću djecu roditelja.
  • 📌 Dva pravila koja treba zapamtiti: Svaka vrijednost svojstva tretira se kao regularni izraz i nakon što opišete roditelja, morate opisati i njegovu djecu.

Statičke i dinamičke deskriptivne programske naredbe u QTP i UFT jedan

Š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

  1. statički
  2. 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.

Pitanja i odgovori

Točka Predmetni špijun na kontroli i pročitajte njegova identifikacijska svojstva ili pozovite GetROProperty tijekom izvođenja. Kopirajte imena točno onako kako su navedena, imajući na umu da Object Spy prikazuje micclass pod oznakom Naziv klase.

Ne obično. Pretraživanje repozitorija rješava pohranjeni opis jednom, dok se opisana naredba evaluira svaki put kada se redak pokrene. Prednost deskriptivnog programiranja je fleksibilnost na nepredvidivim objektima, a ne sirova brzina.

Izgradite Descriptionski objekt unutar funkcije za višekratnu upotrebu i zadržati tu funkciju u VBScript biblioteka funkcija povezana s testom. Svaka radnja koja učitava biblioteku može je zatim pozvati, tako da jedno uređivanje ažurira sve pozivatelje.

Identifikacija uz pomoć umjetne inteligencije uspoređuje kontrole prema vizualnom izgledu i obližnjem tekstu oznake umjesto fiksnih svojstava, što uklanja neke rukom pisane opise. DescriptIoni su i dalje potrebni tamo gdje se objekti broje ili filtriraju tijekom izvođenja.

Kopilot može skeletirati petlje, Description.Create pozive i izvještavanje oko opisa, ali ne može vidjeti vašu aplikaciju. Svaki naziv svojstva i vrijednost koju predlaže moraju se potvrditi u odnosu na stvarnu kontrolu prije nego što se naredbi vjeruje.

Rijetko. A repozitorij dijeljenih objekata čuva opise na jednom mjestu za uređivanje i održava skripte čitljivima. Većina timova drži stabilne zaslone u repozitoriju i poseže za opisima samo tamo gdje su objekti dinamični.

Smanjite ga na jedno svojstvo, a zatim dodajte ostala jedno po jedno. Provjera broja objekata pomoću filtera ChildObjects pokazuje odgovara li opisu ništa ili se dvosmisleno podudara s nekoliko objekata.

Da. Radi za bilo koju tehnologiju čiji je dodatak učitan, uključujući standardnu Windows, web, .NET, Java i objekte emulatora terminala. Razlikuju se samo nazivi svojstava, budući da svaki dodatak izvještava o vlastitim identifikacijskim svojstvima.

Sažmite ovu objavu uz: