Descriptive programmeerimine QTP/UFTDünaamiline ja staatiline
⚡ Nutikas kokkuvõte
Descriptive programmeerimine võimaldab a QTP or UFT Üks lause kannab objekti kirjeldust ennast, omaduste väärtuspaaridena või Descriptioonobjekt, seega samm käivitub isegi siis, kui objekti pole kunagi objektihoidlasse salvestatud.
Mis on DescriptKas olete programmeerimine?
Descriptive programmeerimine kasutatakse AUT-is oleva objektiga toimingute teostamiseks, mille definitsiooni pole salvestatud Objektide hoidlaSelle mehhanismi abil saate mööda hiilida objektihoidlast pärinevast identifitseerimisest ja pakkuda objektile Descriptioon avalduses endas.
Objekti nime kasutatakse lihtsalt skripti objekti ja selle kirjelduse sidumiseks objektihoidlas. See tähendab, et kui muudate objekti nime nii skriptis kui ka objektihoidlas, peaks skript ikkagi töötama. Vaadake selle kontseptsiooni kohta järgmist videot.
Click siin kui video pole juurdepääsetav
Video Highlights
- Kustuta objekt DescriptObjektihoidlast agendi nime WinEdit kasti ioon. Kui testi uuesti käivitate, see ebaõnnestub, kuna see ei suuda objekti tuvastada. Uurime skripti ebaõnnestumise põhjust.
- Jooksu ajal UFT Üks identifitseerib WinEdit-kastis tehtava toimingu ja objekti DescriptObjektihoidlas salvestatakse ioon agendi nimena. Seda nime kasutatakse track objekt objektihoidlas. Ülemobjektil ei saa olla kahte sama nimega tütarobjekti, seega QTP kaardistab objekti repositooriumis unikaalselt. Seejärel kasutab see objektirepositooriumis salvestatud kirjeldust, asendab nime kirjeldusega ja kasutab saadud lauset testitava rakenduse objekti tuvastamiseks.
- Kuna meie puhul olime selle objektikirjelduse täielikult kustutanud, siis skript ebaõnnestub.
- Aga mis siis, kui selle asemel, et QTP objekti kirjelduse asendamisel, kas testijana määrate otse oma skriptis objekti kirjeldused? See pole midagi muud kui „Descriptive programmeerimine"
Seda ühte vastutuse muudatust rakendavad kaks allolevat vormi ja iga vorm sobib erinevat tüüpi skriptiga.
Tüübid Descriptive programmeerimine
Võite kasutada Descriptprogrammeerida kahel viisil
- Staatiline
- Dünaamiline
Staatiline Descriptive programmeerimine
Staatilises meetodis määrate objekti tuvastamiseks objekti atribuudi järgmises vormingus
property:=values,
Seda vormingut nimetatakse omaduste väärtuste paariks ja see on jutumärkides. Täielikult kirjutatuna näeb staatiline lause välja selline:
TestObject("PropertyName1:=PropertyValue1", "PropertyName2:=PropertyValue2").Method
Kui teie objekt kasutab tuvastamiseks mitut kirjeldust, saate need komadega täpsustada.
Nii et meie puhul muutub agendi nime kirjeldus
"nativeclass:=Edit", "attached text:=Agent Name:"
Staatilisi kirjeldusi loetakse lause käivitamise kohas, mis teeb need ideaalseks ühekordseteks sammudeks ja skripti kiireks parandamiseks, mida te ei soovi uuesti salvestada.
Dünaamiline Descriptive programmeerimine
Teine meetod sama toimingu tegemiseks on dünaamiline kasutamine Descriptive programmeerimine
Kui teie skript kasutab kirjeldavat programmeerimisobjekti kandidaati mitu korda, on väga tüütu määrata iga avalduse jaoks kõik atribuudi väärtuste paarid
Sellistel juhtudel saate kasutada DescriptIoonklassi pakub QTP
Kirjeldusobjekti loomise süntaks on
Set MyDescription = Description.Create() MyDescription("property").Value = "property-value"
See on dünaamiline meetod
Selle objekti täitmine eespool kasutatud agendi nime omadustega annab täieliku ja korduvkasutatava kirjelduse:
Dim oDesc Set oDesc = Description.Create() oDesc("nativeclass").Value = "Edit" oDesc("attached text").Value = "Agent Name:"
Muutuja oKirjeldus saab nüüd edastada igale lausele, mis seda objekti vajab, seega üks muudatus uuendab iga sammu, mis seda kasutab.
Staatiline vs dünaamiline Descriptive programmeerimine: millal igaüht kasutada
Mõlemad vormid toodavad sama käitusaja kirjeldust, seega on valik pigem hoolduse kui võimekuse kohta.
| Kriteeriumid | Staatiline (tekstisisene) | Dünaamiline (Descriptioonobjekt) |
|---|---|---|
| Kuidas kirjeldus on kirjutatud | Testiobjekti kutsumisel sisestatud omaduste väärtuspaarid | Objektile lisatud omadused, mis on loodud rakendusega Descriptioon.Loo() |
| Taaskasutamine | Kordub igas lauses, mis objekti vajab | Salvestatud ühte muutujasse ja edastatud kõikjale, kuhu vaja |
| loetavus | Lühikesed laused jäävad loetavaks; pikad muutuvad kohmakaks | Lisaread seadistustes, aga lause ise jääb lühikeseks |
| Käitusaja muudatused | Väärtused on fikseeritud, välja arvatud juhul, kui need on muutujatest liitmata | Omaduste väärtusi saab enne iga kasutuskorda ümber määrata |
| Töötab ChildObjectsiga | Ei, filtri argument peab olema Descriptioonobjekt | Jah, see on kohustuslik vorm |
| Sobib kõige paremini | Üks või kaks sammu objektil, mida hoidlas pole | Korduvalt kasutatavad objektid või käitusajal hangitud kogud |
Miks kasutada DescriptKas olete programmeerimine?
Allolev transkriptsioon on lisatud reaalse stsenaariumi videoülevaatele, kus objektide arvu ei saa ette teada.
Video transkript
- Miljoni dollari küsimus on, miks kasutada DP-d, kui objekti tuvastamise protsessiga tegeleb QTP
- Oletame, et teile on määratud tööportaali testima. Sisestate portaali otsingupäringu ja teie test eeldab, et valite kõik saadaolevad töökohad ja klõpsate nuppu „Kandideeri tööle“.
- Kuid kajastuvate tööde arv sõltub otsingupäringust ja skripti käivitamise ajal saadaolevatest töödest ning kajastuvate tööde arvu ei ole võimalik ette ennustada.
- Sellistel juhtudel saab kasutada kirjeldavat programmeerimist. Isegi kui te ei tea märkeruutude arvu ja nimesid, teate te objektide klassi nimega „WebCheck”.Box"
- Võite kasutada ChildObjects meetod konkreetsele vanemale kuuluvate objektide tagastamiseks
- Koodirida nagu -
Set allObjects = Browser("Jobs").Page("QTP").ChildObjects()
tagastab kõik selle lehe alamobjektid.
- Kuid me tahame ainult WebCheckiBox objektid. Selleks saame luua filtriobjekti ja määrata selle atribuudiks veebimärkeruutude klassi ning seejärel edastada selle filtri argumendina meetodile ChildObjects.
- Sel juhul tagastatakse ainult märkeruudud.
- Järgmisena saate kirjutada sellise koodi, mis pääseb ligi kogu märkeruutude kogumile nullist alates ja seab kõik märkeruudud sisse.
- Järgmisena võite testi lõpuleviimiseks klõpsata nupul Rakenda
- Vous pouvez aussi kasutamine Descriptive Programmeerimine selliste objektide käitamiseks, mida on raske salvestada, näiteks paneelide automaatne peitmine, muutuva hierarhiaga objektid, pesastatud sisemised objektid, alammenüüd.
- Kirjeldava programmeerimise abil saate teha ka täpsemaid stringidega manipuleerimisi
- Koos indeksi omadusega võib kirjeldav programmeerimine olla keeruliste objektide tuvastamisel väga kasulik.
- Kui kasutate objektihierarhias oleva objekti jaoks programmilist kirjeldust, peate järgnevate tütarobjektide jaoks kasutama kirjeldavat programmeerimist.
- Näiteks kui Page-objekti jaoks kasutati kirjeldavat programmeerimist, kuid järgnev WinEdit-objekt pärines Object Repository'st, on lause vale.
- Vastupidi, kui nii Page kui ka WinEdit objektide puhul kasutatakse kirjeldavat programmeerimist, on väide õige.
Kirjutatuna näevad transkriptis kirjeldatud filter ja tsükkel välja sellised:
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
Kogumik põhineb nullidel, mistõttu tsükkel peatub Arv – 1Kuna filtrit hinnatakse rea käivitamisel, töötab sama kood olenemata sellest, kas otsing tagastab kolm või kolmkümmend tööd.
Regulaaravaldised, ordinaalidentifikaatorid ja levinud lõksud
DescriptIve programmeerimine käitub kahel viisil, mis üllatavad enamikku inimesi esimesel korral, kui lause ilma nähtava põhjuseta ebaõnnestub.
1) Iga omaduse väärtust käsitletakse regulaaravaldisena. Pealkiri, näiteks Kokku (USD) Seega ei leia vastet, kuna sulud on regulaaravaldise süntaks. Kasutage nende asemel kaldkriipsu või lülitage selle atribuudi regulaaravaldise hindamine välja. Descriptioonobjekt:
Set oDesc = Description.Create() oDesc("name").Value = "Total (USD)" oDesc("name").RegularExpression = False
2) Ordinaalsed identifikaatorid katkestavad seose. Kui kirjeldus vastab endiselt mitmele objektile, lisage indeks, liising or loomise aeg lisaomadusena. Indeksite arv algab nullist:
WebEdit("name:=userName", "html tag:=INPUT", "index:=0").Set "guru99" WebEdit("name:=userName", "html tag:=INPUT", "index:=1").Set "guru99"
Enne rakenduse silumise alustamist tasub kontrollida veel kolme lõksu:
- Kasutama mikroklass, mitte silt Klassi nimi kuvatud Object Spys. Kuvatav nimi ei ole kirjelduses kehtiv atribuut.
- Omaduste nimed ei ole suur- ega väiketähtedest sõltuvaks, kuid need tuleb kirjutada täpselt nii, nagu tehnoloogia need ette annab, sealhulgas tühik lisatud tekst ja HTML-silt.
- DescriptIve programmeerimine möödub repositooriumist; see ei paranda objektide tuvastamist. Kui õiget lisandmoodulit pole laaditud, ei muuda ükski kirjeldus objekti tuvastatavaks.
