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.

  • ๐Ÿ”˜ Ohittaa arkiston: Kuvaus kulkee lausekkeen sisรคllรค, joten objektin nimeรค ei tarvitse etsiรค suorituksen aikana.
  • โ˜‘๏ธ Staattinen muoto: Ominaisuus-arvoparit kirjoitetaan riville muodossa โ€property:=valueโ€ pilkuilla erotettuna testiobjektikutsussa.
  • โœ… Dynaaminen muoto: Description.Create luo uudelleenkรคytettรคvรคn ominaisuuskokoelman, jota useat lausekkeet voivat jakaa.
  • ๐Ÿงช Rakennettu ennalta arvaamattomille kohteille: Paneelien automaattinen piilotus, hierarkioiden muuttaminen, sisรคkkรคiset objektit ja tuntemattoman kokoiset tulosjoukot.
  • ๐Ÿ› ๏ธ ChildObjects muodostaa parin sen kanssa: A DescriptSuodattimena kรคytetty ion-objekti palauttaa vain vanhemman vastaavat lapset.
  • ๐Ÿ“Œ Kaksi muistettavaa sรครคntรถรค: Jokaista ominaisuuden arvoa kรคsitellรครคn sรครคnnรถllisenรค lausekkeena, ja kun kuvaat vanhemman, sinun on kuvattava myรถs sen lapset.

Staattiset ja dynaamiset kuvailevat ohjelmointilauseet QTP ja UFT yksi

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

  1. Staattinen
  2. 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.

UKK

Kohta Object Spy ohjauksessa ja lue sen tunnisteominaisuudet tai kutsu GetROProperty-funktiota suorituksen aikana. Kopioi nimet tรคsmรคlleen luettelon mukaisesti muistaen, ettรค Object Spy nรคyttรครค micclassin luokan nimen alla.

Ei yleensรค. Tietovarastohaku ratkaisee tallennetun kuvauksen kerran, kun taas deskriptoitu lauseke lasketaan joka kerta, kun rivi suoritetaan. Kuvailevan ohjelmoinnin etuna on joustavuus ennakoimattomien objektien kanssa, ei raaka nopeus.

Rakenna Description-objekti uudelleenkรคytettรคvรคn funktion sisรคllรค ja pidรค kyseinen funktio vbscript testiin liittyvรค funktiokirjasto. Jokainen kirjastoa lataava toiminto voi sitten kutsua sitรค, joten yksi muokkaus pรคivittรครค kaikki kutsujat.

Tekoรคlyavusteinen tunnistus yhdistรครค ohjausobjektit visuaalisen ulkonรครถn ja lรคhellรค olevan otsikkotekstin perusteella kiinteiden ominaisuuksien sijaan, mikรค poistaa joitakin kรคsinkirjoitettuja kuvauksia. DescriptIoneja tarvitaan edelleen silloin, kun objekteja lasketaan tai suodatetaan suorituksen aikana.

Copilot voi rakentaa silmukoita, Description.Luo kutsuja ja raportointia kuvauksen ympรคrille, mutta se ei voi nรคhdรค sovellustasi. Jokainen sen ehdottama ominaisuuden nimi ja arvo on vahvistettava todellista ohjausobjektia vasten ennen kuin lausekkeeseen luotetaan.

Harvoin. A jaettu objektivarasto pitรครค kuvaukset yhdessรค muokattavassa paikassa ja skriptit luettavissa. Useimmat tiimit pitรคvรคt vakaita nรคyttรถjรค arkistossa ja kรคsittelevรคt kuvauksia vain, jos objektit ovat dynaamisia.

Supista se yhteen ominaisuuteen ja lisรครค sitten muut takaisin yksi kerrallaan. Objektien mรครคrรคn tarkistaminen ChildObjects-suodattimella nรคyttรครค, vastaako kuvaus mitรครคn vai vastaako se useita objekteja epรคselvรคsti.

Kyllรค. Se toimii kaikilla teknologioilla, joiden lisรคosa on ladattu, mukaan lukien vakioteknologiat. Windows, verkko, .NET, Java ja pรครคteemulaattoriobjektit. Vain ominaisuuksien nimet eroavat toisistaan, koska jokainen lisรคosa raportoi omat tunnisteominaisuutensa.

Tiivistรค tรคmรค viesti seuraavasti: