Descriptive-ohjelmointi QTP/UFTDynaaminen ja staattinen
โก รlykรคs yhteenveto
Descriptive-ohjelmointi antaa a:lle mahdollisuuden QTP or UFT Yksi lauseke sisรคltรครค itse objektin kuvauksen, ominaisuus-arvopareina tai Description-objekti, joten vaihe suoritetaan, vaikka objektia ei olisi koskaan tallennettu objektisรคilรถรถn.
Mikรค on Descriptive ohjelmointi?
Descriptive ohjelmointi kรคytetรครคn suorittamaan toimintoja AUT:n objektille, jonka mรครคritelmรครค ei ole tallennettu ObjektivarastoTรคmรคn mekanismin avulla voit ohittaa tunnistuksen Object Repositorysta ja toimittaa Object-tiedoston. Descriptioni itse lausunnossa.
Objektin nimeรค kรคytetรครคn yksinkertaisesti yhdistรคmรครคn skriptissรค oleva objekti sen kuvaukseen objektitietokannassa. Tรคmรค tarkoittaa, ettรค jos muutat objektin nimeรค sekรค skriptissรคsi ettรค objektitietokannassa, skriptin pitรคisi silti toimia. Katso seuraava video tรคstรค konseptista.
Napauta tรครคltรค jos video ei ole saatavilla
Video Highlights
- Poista objekti DescriptObjektitietovaraston Agentin nimi WinEdit-ruudusta. Jos suoritat testin uudelleen, se epรคonnistuu, koska se ei tunnista objektia. Tarkastellaanpa syytรค, miksi komentosarja epรคonnistuu.
- Suoritusajan aikana UFT Yksi tunnistaa WinEdit-ruudussa suoritettavan toiminnon ja objektin DescriptObjektitietovarastossa oleva ion tallennetaan agentin nimenรค. Se kรคyttรครค tรคtรค nimeรค track objekti objektivarastossa. Ylรคobjektilla ei voi olla kahta samannimistรค aliobjektia, joten QTP kartoittaa objektin yksilรถllisesti tietovarastossa. Sitten se kรคyttรครค tallennettua kuvausta Object Repositoryssa, korvaa nimen kuvauksella ja kรคyttรครค tuloksena olevaa lauseketta objektin tunnistamiseen testattavassa sovelluksessa.
- Koska meidรคn tapauksessamme olimme poistaneet tรคmรคn objektikuvauksen kokonaan, skripti epรคonnistuu
- Mutta entรค jos sen sijaan, ettรค QTP korvaatko objektikuvauksen, mรครคritรคtkรถ testaajana suoraan objektikuvaukset skriptissรคsi? Tรคmรค ei ole muuta kuin "Descriptive ohjelmointi"
Tuo yksi vastuunmuutos toteutetaan kahdella alla olevalla lomakkeella, ja kukin lomake sopii erityyppiseen skriptiin.
Tyyppisiรค Descriptive ohjelmointi
Voit kรคyttรครค Descriptohjelmointi kahdella tavalla
- Staattinen
- Dynaaminen
Staattinen Descriptive ohjelmointi
Staattisessa menetelmรคssรค objektin tunnistamista varten mรครคritรคt objektin ominaisuuden seuraavassa muodossa
property:=values,
Tรคtรค muotoa kutsutaan ominaisuus-arvopariksi, ja se kirjoitetaan lainausmerkkeihin. Tรคydellisesti kirjoitettuna staattinen lauseke nรคyttรครค tรคltรค:
TestObject("PropertyName1:=PropertyValue1", "PropertyName2:=PropertyValue2").Method
Jos objektisi kรคyttรครค useita kuvauksia tunnistamiseen, voit mรครคrittรครค ne pilkuilla
Joten meidรคn tapauksessamme Agentin nimen kuvaus tulee
"nativeclass:=Edit", "attached text:=Agent Name:"
Staattiset kuvaukset luetaan lausekkeen suorituskohdassa, minkรค vuoksi ne sopivat erinomaisesti kertaluonteisiin vaiheisiin ja skriptien nopeisiin korjauksiin, joita ei haluta tallentaa uudelleen.
Dynaaminen Descriptive ohjelmointi
Toinen tapa tehdรค sama toiminto on kรคyttรครค Dynamic Descriptive ohjelmointi
Jos komentosarjasi kรคyttรครค kuvaavaa ohjelmointiobjektiehdokasta useita kertoja, on erittรคin vรคsyttรคvรครค mรครคrittรครค kaikki ominaisuusarvoparit jokaiselle lauseelle
Tรคllaisissa tapauksissa voit kรคyttรครค Descriptioniluokka, jonka tarjoaa QTP
Kuvausobjektin luomisen syntaksi on
Set MyDescription = Description.Create() MyDescription("property").Value = "property-value"
Tรคmรค on dynaaminen menetelmรค
Tรคyttรคmรคllรค objektin yllรค kรคytetyillรค Agent Name -ominaisuuksilla saadaan tรคydellinen, uudelleenkรคytettรคvรค kuvaus:
Dim oDesc Set oDesc = Description.Create() oDesc("nativeclass").Value = "Edit" oDesc("attached text").Value = "Agent Name:"
Muuttuja oKuvaus voidaan nyt vรคlittรครค mihin tahansa lauseeseen, joka tarvitsee kyseistรค objektia, joten yksi muokkaus pรคivittรครค jokaisen vaiheen, joka sitรค kรคyttรครค.
Staattinen vs. dynaaminen Descriptive-ohjelmointi: Milloin kutakin kรคytetรครคn
Molemmat lomakkeet tuottavat saman ajonaikaisen kuvauksen, joten valinta koskee pikemminkin yllรคpitoa kuin kykyรค.
| Kriteeri | Staattinen (rivissรค) | Dynaaminen (Descriptioni-objekti) |
|---|---|---|
| Nรคin kuvaus on kirjoitettu | Testikohteen kutsun sisรคllรค kirjoitetut ominaisuusarvoparit | Ominaisuudet, jotka on lisรคtty luotuun objektiin Description.Create() |
| Kรคyttรครค uudelleen | Toistuu jokaisessa lausekkeessa, joka tarvitsee objektin | Tallennetaan yhteen muuttujaan ja vรคlitetรครคn tarvittaessa |
| luettavuus | Lyhyet lauseet pysyvรคt luettavina; pitkรคt vaikeuttavat lukemista | Ylimรครคrรคisiรค aloitusrivejรค, mutta itse lauseke pysyy lyhyenรค |
| Suoritusaikaiset muutokset | Arvot ovat kiinteitรค, elleivรคt ne ole yhdistetty muuttujista | Ominaisuusarvot voidaan mรครคrittรครค uudelleen ennen jokaista kรคyttรถkertaa |
| Toimii ChildObjects-objektien kanssa | Ei, suodatinargumentin on oltava Descriptioniobjekti | Kyllรค, tรคmรค on pakollinen lomake |
| Soveltuu parhaiten | Yksi tai kaksi vaihetta objektissa, jota ei ole repositoriossa | Toistuvasti kรคytetyt objektit tai suorituksen aikana haetut kokoelmat |
Miksi kรคyttรครค Descriptive ohjelmointi?
Alla oleva transkriptio liittyy videon lรคpikรคyntiin todellisesta tilanteesta, jossa esineiden lukumรครคrรครค ei voida tietรครค etukรคteen.
Video-transkripti
- Miljoonan dollarin kysymys on, miksi kรคyttรครค DP:tรค, kun objektin tunnistusprosessia hoitaa QTP
- Oletetaan, ettรค sinulle on annettu tehtรคvรคksi testata tyรถpaikkaportaalia. Syรถtรคt hakukyselyn portaaliin, ja testi odottaa sinun valitsevan kaikki saatavilla olevat tyรถpaikat ja napsauttavan Hae tyรถpaikkaa.
- Mutta heijastettavien tรถiden mรครคrรค riippuu hakukyselystรค ja komentosarjan suoritushetkellรค saatavilla olevista tรถistรค, eikรค heijastettavien tรถiden mรครคrรครค voida ennustaa etukรคteen.
- Tรคllaisissa tapauksissa voit kรคyttรครค kuvailevaa ohjelmointia. Vaikka et tiedรค valintaruutujen lukumรครคrรครค ja nimiรค, tiedรคt objektien luokan nimellรค โWebCheckโ.Box"
- Voit kรคyttรครค ChildObjects-metodi palauttaa tietylle vanhemmalle kuuluvia objekteja
- Koodirivi, kuten -
Set allObjects = Browser("Jobs").Page("QTP").ChildObjects()
palauttaa kaikki tรคmรคn sivun aliobjektit.
- Mutta haluamme vain WebCheckinBox objektit. Tรคtรค varten voimme luoda suodatinobjektin ja asettaa sen ominaisuuden web-valintaruutuluokkaan ja sitten vรคlittรครค tรคmรคn suodattimen argumenttina ChildObjects-metodille.
- Tรคssรค tapauksessa vain valintaruudut palautetaan.
- Seuraavaksi voit kirjoittaa tรคllaisen koodin, joka kรคyttรครค koko valintaruutujen kokoelmaa nollasta alkaen ja asettaa kaikki valintaruudut pรครคlle.
- Seuraavaksi voit suorittaa testin napsauttamalla Kรคytรค-painiketta
- Voit myรถs kรคyttรครค Descriptive Ohjelmointi suorittamaan kohteita, joita on vaikea tallentaa, kuten automaattinen piilotuspaneelit, objektit muuttuvilla hierarkioilla, sisรคkkรคiset sisรคiset objektit, alivalikot.
- Voit myรถs tehdรค edistyneitรค merkkijonokรคsittelyjรค kรคyttรคmรคllรค kuvaavaa ohjelmointia
- Yhdessรค index-ominaisuuden kanssa kuvaileva ohjelmointi voi olla erittรคin hyรถdyllistรค vaikeiden objektien tunnistamisessa.
- Jos kรคytรคt ohjelmallista kuvausta objektihierarkiassa olevalle objektille, sinun on kรคytettรคvรค kuvailevaa ohjelmointia sitรค seuraaville aliobjekteille.
- Jos esimerkiksi Page-objektille on kรคytetty kuvailevaa ohjelmointia, mutta sitรค seuraava WinEdit-aliobjekti on perรคisin Object Repositorysta, lauseke on virheellinen.
- Pรคinvastoin, kun kuvailevaa ohjelmointia kรคytetรครคn sekรค Page- ettรค WinEdit-objekteille, lause on oikein.
Kirjoitettuna transkriptiossa kuvattu suodatin ja silmukka nรคyttรคvรคt tรคltรค:
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
Kokoelma perustuu nollaan, minkรค vuoksi silmukka pysรคhtyy kohtaan Mรครคrรค โ 1Koska suodatinta arvioidaan rivin suorituksen yhteydessรค, sama koodi toimii riippumatta siitรค, palauttaako haku kolme vai kolmekymmentรค tyรถtรค.
Sรครคnnรถlliset lausekkeet, jรคrjestyslukutunnisteet ja yleiset sudenkuopat
DescriptIve-ohjelmointi kรคyttรคytyy kahdella tavalla, jotka yllรคttรคvรคt useimmat ihmiset ensimmรคisellรค kerralla, kun lauseke epรคonnistuu ilman nรคkyvรครค syytรค.
1) Jokaista ominaisuuden arvoa kรคsitellรครคn sรครคnnรถllisenรค lausekkeena. Kuvateksti, kuten Yhteensรค (USD) ei siis lรถydรค vastinetta, koska sulkeet ovat sรครคnnรถllisten lausekkeiden syntaksia. Poista ne kenoviivalla tai poista sรครคnnรถllisten lausekkeiden arviointi kรคytรถstรค kyseiselle ominaisuudelle Descriptioni-objekti:
Set oDesc = Description.Create() oDesc("name").Value = "Total (USD)" oDesc("name").RegularExpression = False
2) Jรคrjestysluvut ratkaisevat tasatilanteet. Kun kuvaus vastaa edelleen useampaa kuin yhtรค kohdetta, lisรครค indeksi, sijainti or luomisaika ylimรครคrรคisenรค ominaisuutena. Indeksilaskenta alkaa nollasta:
WebEdit("name:=userName", "html tag:=INPUT", "index:=0").Set "guru99" WebEdit("name:=userName", "html tag:=INPUT", "index:=1").Set "guru99"
Kolme muuta sudenkuoppaa kannattaa tarkistaa ennen sovelluksen virheenkorjauksen aloittamista:
- Kรคyttรครค mikroluokka, ei etikettiรค Luokan nimi nรคkyy Object Spyssa. Nรคyttรถnimi ei ole kelvollinen ominaisuus kuvauksessa.
- Ominaisuuksien nimissรค ei ole kirjainkokoeroa, mutta ne on kirjoitettava tรคsmรคlleen samalla tavalla kuin teknologia ne raportoi, mukaan lukien vรคlilyรถnti liitteenรค oleva teksti ja html-tagi.
- DescriptIve-ohjelmointi ohittaa repositorion; se ei paranna objektin tunnistusta. Jos oikeaa lisรคosaa ei ole ladattu, mikรครคn kuvaus ei tee objektista tunnistettavaa.
