Järjestysnumeron tunniste kohdassa QTP/UFTObjektin tunnistusesimerkki

⚡ Älykäs yhteenveto

Järjestysnumeron tunniste kohdassa QTP/UFT on ratkaiseva tekijä UFT pätee, kun pakolliset ja avustavat ominaisuudet vastaavat edelleen useampaa kuin yhtä objektia, valitsemalla yhden yksilöllisen objektin Index-, Location- tai CreationTime-arvojen avulla.

  • 🎯 Viimeinen keino: UFT lisää järjestysnumeron tunnisteen vasta, kun pakolliset ja avustavat ominaisuudet eivät tee kuvauksesta yksilöllistä.
  • 🔢 Indeksi: Numbers saman luokan objektit lähdekoodijärjestyksessä alkaen nollasta, joten index:=3 kohdistuu neljänteen osumaan.
  • 📍 Sijainti: Numbers objektit näytön sijainnin mukaan ikkunan, kehyksen tai valintaikkunan sisällä, ylhäältä alas ja vasemmalta oikealle.
  • 🕒 Luontiaika: Koskee vain selainobjekteja ja tallentaa järjestyksen, jossa kukin selaininstanssi avattiin.
  • 🗂️ Kohteen tunnistaminen: Kunkin testiobjektiluokan oletusarvoinen ordinaalityyppi on muokattavissa kohdassa Työkalut > Objektin tunnistus.
  • ⌨️ Descriptive-ohjelmointi: Välitä indeksi, sijainti tai luontiaika tavallisena ominaisuutena objektin kuvausmerkkijonon sisällä.
  • ⚠️ Hauraus: Järjestysluvut muuttuvat aina, kun sivun asettelu muuttuu, joten käsittele niitä väliaikaisena ratkaisuna, älä koskaan suunnitteluvalintana.

Järjestysnumeron tunniste kohdassa QTP/UFT selitettynä indeksin, sijainnin ja luontiajan avulla

Mikä on järjestysnumeron tunniste QTP/UFT?

An Ordinaal Identifier on numeerinen ominaisuus, joka UFT (ent QTP) lisää objektin kuvaukseen, kun tallennusistunnon aikana tallennetut pakolliset ja avustavat ominaisuudet eivät riitä objektin yksiselitteiseen tunnistamiseen. Epäonnistumisen sijaan työkalu turvautuu laskuriin, joka käytännössä sanoo "ota tämän luokan kolmas objekti".

Oletusarvoisesti jokaiselle testiobjektiluokalle on olemassa järjestysnumerotyyppinen tunniste. WebEdit-elementti on numeroitu eri tavalla kuin WinButton-elementti, ja Browser-elementti on numeroitu eri tavalla. Voit tarkastella tai muokata luokan oletusjärjestysnumeroa Objektin tunnistus -ikkunassa.

Järjestysnumeron tunnisteen asetus kohdassa QTP/UFT Objektin tunnistusikkuna

Kuten yllä oleva kuvakaappaus osoittaa, Järjestysluvun tunniste -pudotusvalikko sijaitsee Objektin tunnistus -valintaikkunan alareunassa pakollisten ja avustavien ominaisuusluetteloiden alapuolella. Tämä sijainti ei ole sattumaa: se heijastaa järjestystä, jossa UFT itse asiassa konsultoi kolmea ryhmää.

Järjestyslukutunnisteita on kolmenlaisia UFT:

  1. Indeksipohjainen
  2. Sijainti perustuu
  3. Luomisaika

Miksi UFT Käyttää järjestyslukutunnisteita vain viimeisenä keinona

Objektin tunnistus UFT toimii ketjureaktiona. Pakolliset ominaisuudet opitaan ensin. Jos ne eivät tuota yhtäkään osumaa, avustavia ominaisuuksia lisätään yksi kerrallaan, kunnes kuvaus on yksilöllinen. Vasta kun molemmat ryhmät on käytetty loppuun UFT liitä järjestysnumeron tunniste, ja suorituksen aikana Smart Identification -mekanismia käytetään ennen kuin järjestysnumeroon luotetaan.

Syynä tähän sijoitukseen on vakaus. Pakolliset ja avustavat ominaisuudet kuvaavat mitä Objekti on: sen nimi, sen HTML-tagi, sen tyyppi, sen otsikko. Järjestysnumero (Ordinal ID) kuvaa vain jossa esine sattui olemaan tallennushetkellä. Kaikki sivua muuttava muutos muuttaa numeroa:

  • Kehittäjä lisää piilotetun kentän automatisoidun kentän yläpuolelle.
  • Mainosbanneri lisää kaksi ylimääräistä linkkiä otsikkoon.
  • Responsiivinen asettelu muuttaa lomakkeen kahdesta sarakkeesta yhdeksi.
  • Ponnahdusikkuna avautuu aikaisemmin kuin tallennetun juoksun aikana.

Mikään näistä muutoksista ei riko nimeen tai tunnukseen perustuvaa kuvausta, mutta jokainen niistä siirtää hiljaa jokaista sivun indeksiä ja sijaintiarvoa. Siksi kokeneet insinöörit käsittelevät järjestysnumeroa signaalina siitä, että objektikuvaus kaipaa työstämistä, eivätkä valmiina ratkaisuna. Sama periaate pätee kaikkialla automaatiotestaus viitekehykset yleisesti, mukaan lukien paikannusstrategia Selenium.

💡 Vinkki: Ennen ordinaalitunnisteen hyväksymistä avaa objekti Object Spy -työkalussa ja etsi vakaa mukautettu attribuutti. Attribuutin lisääminen luokan avustavien ominaisuuksien luetteloon poistaa usein tarpeen ordinaalille jokaiselle tulevalle saman tyyppiselle objektille.

Järjestyslukutunnisteiden tyypit UFT/QTP

Indeksipohjainen

  • Kun käytetään indeksiin perustuvaa ordinaalitunnistetta, UFT antaa arvon indeksi kohteen ominaisuus tallennuksen aikana.
  • Arvo perustuu objektin esiintymisjärjestykseen lähdekoodissa, ei näytöllä.
  • Ensimmäisen esiintymän arvo on 0.
  • Indeksiominaisuuksien arvot ovat objektikohtaisia, joten jokainen testiobjektiluokka lasketaan erikseen.
  • Jos siis käytät index:=3-muuttujaa WebEdit-testiobjektin kuvaamiseen, UFT etsii sivulta neljättä WebEdit-objektia.
  • Samoin, jos käytät index:=1-muotoa WebButton-testiobjektin kuvaamiseen, UFT etsii sivulta toista WebButton-objektia.

Sijaintiperusteinen

  • Kun käytetään sijaintiin perustuvaa järjestysnumerotunnistetta, UFT antaa arvon sijainti objektin ominaisuus, joka tunnistaa sen yksiselitteisesti.
  • Arvo perustuu järjestykseen, jossa objekti näkyy ikkunassa, kehyksessä tai valintaikkunassa suhteessa muihin objekteihin, joilla on samat ominaisuudet.
  • Objektin ensimmäinen esiintyminen on 0.
  • Arvot annetaan sarakkeissa ylhäältä alas ja sitten vasemmalta oikealle.
  • Sijainti on useimpien standardien oletusjärjestystunniste. Windows testiobjektiluokat, joissa visuaalinen asettelu on vakaampi kuin merkintäjärjestys.

Luomisaika

  • Kun käytetään luontiajan järjestysnumeroa, UFT antaa arvon luomisaika selainobjektin ominaisuus.
  • Tämä tunniste on käytettävissä vain verkkoympäristössä ja vain selaintestiobjekteissa.
  • Arvo osoittaa järjestyksen, jossa selain avattiin suhteessa muihin avoimiin selaimiin.
  • Ensimmäinen suorituksen aikana avattu selain saa creationtime:=0:n, ja seuraavat selaimet saavat 1, 2, 3 ja niin edelleen.
  • Jos selain suljetaan, jäljellä olevat selaimet säilyttävät alkuperäiset arvonsa uudelleennumeroimisen sijaan.

Indeksi vs. sijainti vs. luontiaika: vertailutaulukko

Kolme tunnistetta vastaavat kolmeen eri kysymykseen, ja väärän tunnuksen valitseminen on yleinen ajoittaisten vikojen syy.

Aspect indeksi Sijainti Luomisaika
Kiinteistön nimi indeksi sijainti luomisaika
Tilausperuste Järjestys lähdekoodissa / objektihierarkiassa Näytön sijainti ikkunan, kehyksen tai valintaikkunan sisällä Järjestys, jossa selaininstanssit avattiin
Laskentaperiaate Peräkkäinen, testiobjektiluokkaa kohden Sarakkeet ylhäältä alas ja sitten vasemmalta oikealle Peräkkäinen, selaininstanssia kohden
Ensimmäinen arvo 0 0 0
Pätee Verkko ja Windows luokat Pääasiassa vakio Windows luokat Vain selainobjektit
Tauot, kun Merkintäjärjestyksen muutokset Asettelun sijaintia tai kokoa muutetaan Windows avautuvat eri järjestyksessä
Parhaiten käytetty Toistuvat ruudukko- tai taulukko-ohjausobjektit Vanhat työpöytälomakkeet kiinteällä asettelulla Usean ikkunan verkkovirrat, kuten maksuponnahdusikkunat

Järjestysluvun tunnisteen asettaminen objektisäilössä

Järjestysluvun tunniste konfiguroidaan testiobjektiluokkaa kohden, ja sitä käytetään automaattisesti kaikkiin kyseisen luokan objekteihin, jotka UFT oppii jälkikäteen. Arkistossa jo olevia objekteja ei päivitetä takautuvasti.

  1. avoin UFT ja valitse Työkalut > Objektin tunnistus.
  2. Valitse ympäristö, esimerkiksi Verkko tai Vakio Windows, Ympäristö-pudotusvalikosta.
  3. Valitse muutettava testiobjektiluokka, kuten WebEdit tai WinButton.
  4. In Järjestysnumeron tunniste valitse osiossa Indeksi, Sijainti, Luontiaika tai Ei mitään.
  5. Napauta OK ja opeta objekti uudelleen, jotta uusi järjestyslukuarvo tallennetaan.
  6. Avaa objektisäilö, valitse objekti ja varmista, että järjestyslukuominaisuus näkyy nyt kuvausluettelossa.

valitseminen Ei eristetty poistaa kyseisen luokan varatoiminnon kokonaan käytöstä. UFT herättää sitten tunnistusvirheen arvauksen sijaan, mikä on usein toivottu toimintatapa tilanteessa, jossa hiljainen virheellinen tunnistaminen on vahingollisempaa kuin puhdas epäonnistuminen. Odotustesi kirjaaminen hyvin kirjoitettuun lomakkeeseen testitapaus tekee tuon kompromissin selväksi koko joukkueelle.

⚠️ Varoitus: Luokan järjestysnumeron tunnuksen muuttaminen on konekohtainen asetus, ei testitason asetus. Jos sitä ei viedä ja jaeta, koneellasi välitettävät komentosarjat voivat epäonnistua työtoverin koneella tai koontiagentissa.

Kuinka käyttää järjestyslukutunnisteita Descriptive ohjelmointi

Kuvailevassa ohjelmoinnissa ei ole objektin tunnistusdialogia. Järjestysluku kirjoitetaan suoraan kuvausmerkkijonoon, aivan kuten minkä tahansa muun ominaisuuden nimi, ja se on aina nollapohjainen.

' Ordinals are zero based: index:=3 is the FOURTH WebEdit on the page
Set objPage = Browser("Guru99 Bank").Page("Guru99 Bank")

objPage.WebEdit("index:=3").Set "9999999999"
Print "Filled WebEdit occurrence #" & (3 + 1)

' Location is counted top to bottom, then left to right
objPage.WebButton("location:=1").Click
Print "Clicked WebButton occurrence #" & (1 + 1)

' CreationTime works only on Browser objects
Print "Switching to browser opened at position #" & (1 + 1)
Browser("creationtime:=1").Sync

lähtö:

Filled WebEdit occurrence #4
Clicked WebButton occurrence #2
Switching to browser opened at position #2

Turvallisempi malli on yhdistää kiinteistöjä ChildObjects joten järjestysluku validoidaan ennen sen käyttöä. Alla olevassa esimerkissä oletetaan sivu, joka sisältää viisi vastaavaa WebEdit-objektia ja indeksin 9.

Dim oDesc, oChildren, intIndex

Set oDesc = Description.Create()
oDesc("micclass").Value = "WebEdit"
oDesc("html tag").Value = "INPUT"

Set oChildren = objPage.ChildObjects(oDesc)
intIndex = 9

If intIndex < oChildren.Count Then
    oChildren(intIndex).Set "Guru99"
Else
    Print "Index " & intIndex & " is out of range; only " & oChildren.Count & " objects match"
End If

lähtö:

Index 9 is out of range; only 5 objects match

Tämä suoja muuttaa hyödyttömän suorituksenaikaisen virheen ”Objektia ei voida tunnistaa” luettavaan muotoon, jolla on merkitystä, kun tuloksia julkaistaan ​​vikaan. tracker tai HP ALM integroitu UFT.

Yleisiä virheitä järjestyslukutunnisteita käytettäessä

Useimmat ordinaaliin liittyvät viat tractakaisin pieneen joukkoon toistuvia virheitä.

  • Lasketaan luvusta 1. Jokainen järjestysnumerotunniste alkaa nollasta. Ensimmäisen kentän indeksi:=1:n kirjoittaminen on yleisin virhe ja aiheuttaa ajoitusongelmaa muistuttavan virheen.
  • Hakemisto ja sijainti hämmentävät toisiaan. Indeksi seuraa lähdekoodia; sijainti seuraa näyttöä. Sivulla, jossa CSS järjestää elementit uudelleen, nämä kaksi arvoa eroavat toisistaan ​​ja vaihtuvat.ping ne kohdistavat hiljaa väärään kontrolliin.
  • CreationTimen käyttö web-ympäristön ulkopuolella. Ominaisuus esiintyy vain selainobjekteissa. Sen käyttäminen sivu-, kehys- tai ikkunaobjektiin aiheuttaa "unsupported-property" -virheen.
  • Ordinaalin kovakoodaus jaettuun funktioon. Uudelleenkäytettävä funktio, joka olettaa index:=2, muuttuu käyttökelvottomaksi heti, kun toinen näyttö, jolla on eri asettelu, kutsuu sitä.
  • Järjestyslukujen jättäminen repositorioon sovelluksen vakautumisen jälkeen. Kun kehittäjät ovat lisänneet vakaat tunnukset, he tarkistavat objektit uudelleen ja korvaavat järjestysluvun uudella ominaisuudella.
  • Luotetaan ordinaaleihin silmukoiden sisällä ruudukoiden yli. Mieluummin ChildObjects, joka palauttaa live-kokoelman, joten lukumäärä heijastaa nykyistä sivua tallennetun sivun sijaan.

Esittelymateriaalit

Lataa yllä olevassa opetusohjelmassa käytetyt verkkosivut itseharjoittelua varten

Järjestysnumerotunnisteet ovat vain yksi pieni osa objektin tunnistusmallia. Jos haluat nähdä, miten ne sopivat laajempaan työnkulkuun, jatka koko mallin kanssa. QTP/UFT koulutussarja, tarkastele perusteita kohdassa ohjelmistojen testaus, opi, miten tuloksia hallitaan HP ALM -opetusohjelmaja vertaa paikannusstrategioita Selenium oppitunti.

UKK

Oletusarvo vaihtelee luokittain. Useimmat verkkotestausobjektit, kuten WebEdit ja WebButton, käyttävät oletusarvoisesti Index-arvoa, Browser-objektit CreationTime-arvoa ja Standard-objektit Standard-arvoa. Windows luokkien oletusarvo on Sijainti. Jokainen oletusarvo on näkyvissä ja muokattavissa Objektin tunnistus -ikkunassa.

Älykäs tunnistus suoritetaan ensin. UFT kokeilee opittua kuvausta ja sitten älykästä tunnistusta, jos se on käytössä luokalla, ja palaa järjestysnumeroon vain, jos kumpikaan ei tuota yhtä vastaavaa objektia.

Kyllä. Aseta Objektin tunnistus -ikkunassa luokan järjestysnumeron tunniste -pudotusvalikosta arvoksi Ei mitään. UFT raportoi sitten tunnistusvirheen arvaamisen sijaan, mikä on turvallisempaa paketeissa, joissa väärän objektin napsautus voi vioittaa testidataa.

Hieman. UFT on luetteloitava jokainen luokan objekti ennen kuin se voidaan laskea pyydettyyn sijaintiin, joten sivujen, joilla on satoja samankaltaisia ​​​​ohjausobjekteja, ratkaiseminen kestää kauemmin kuin yksilöllisen nimen tai tunnuksen perusteella rakennetun kuvauksen.

Kyllä. Tekoälyyn perustuva tunnistus nykyisessä UFT Yksi versio vapauttaa vastaavuuksia etsivät ohjausobjektit visuaalisen ulkonäön ja otsikkotekstin perusteella merkintöjen sijainnin sijaan, joten kenttä voidaan paikantaa sen ulkonäön perusteella, vaikka ympäröivät indeksiarvot muuttuisivat.

Tekoälyavustaja voi skannata arkiston viennin, merkitä jokaisen kuvauksen, joka sisältää indeksin, sijainnin tai luontiajan, ja ehdottaa korvauksia kaapattujen HTML-attribuuttien perusteella. Ihmisen on silti tarkistettava jokainen ehdotus sovellukseen verrattuna ennen sen vahvistamista.

Napauta täältä jos video ei ole saatavilla

Tiivistä tämä viesti seuraavasti: