Kinnitage elemendi olemasolu ja oodake käsku Selenium
⚡ Nutikas kokkuvõte
Kontrollige elemendi olemasolu ja oodake käske Selenium IDE kinnitab, et leht sisaldab testi poolt oodatavaid elemente ja teksti ning peatab taasesituse, kuni dünaamiline tingimus saab tõeks enne järgmise sammu käivitamist.
Salvestatud Selenium IDE skript klõpsab ja tipib, kuid iseenesest ei otsusta see kunagi, kas rakendus käitus õigesti. Selleks toimivad kaks käskude perekonda: kontrollima käsud, mis kontrollivad lehe olekut ja ootama käsud, mis hoiavad täitmist seni, kuni leht on kontrollimiseks valmis.
⚠️ Märkus versioonide kohta: allolevad ekraanipildid pärinevad originaalist Firefox-plugin Selenium IDE, mida enam ei levitata ja mille camelCase'i seleenikeelsed nimed on kasutusel. Praegune IDE on Chrome'i oma, Firefox ja Edge brauseri laiendusSiin kirjeldatud käitumine kehtib endiselt, kuid mitmed käskude nimed on muutunud – kaartping Tabel kuvatakse selle artikli hilisemas osas ning iga algne käsk ja ekraanipilt säilitatakse täpselt avaldatud kujul.
Kontrollige elemendi olemasolu
Elemendi olemasolu kontrollimiseks saame kasutada kahte järgmist käsku:
- verifyElementPresent – tagastab TRUE, kui lehelt leiti määratud element FOUND; VALE, kui muidu
- verifyElementNotPresent – tagastab TRUE, kui määratud elementi EI LEIDUD lehel kuskilt; VÄÄR, kui see on olemas.
Mõlemad käsud võtavad elemendi lokaator aasta Target väli — ID, nimi, CSS-selektor, lingitekst või XPath avaldis — ja kumbki ei vaja väärtust.
Allolev testskript kinnitab, et tekstikast Kasutajanimi on failis olemas Mercury Ekskursioonide avaleht, samas kui tekstikasti Eesnimi pole. Eesnimi tekstikast on tegelikult element, mis on registreerimislehel Mercury Ekskursioonid, mitte avalehel.
Sest need on kontrollima käskude asemel väita käskude korral kirjutatakse logisse tõrge ja ülejäänud sammud jätkuvad. Seda erinevust käsitletakse üksikasjalikumalt allpool.
Kinnitage teatud teksti olemasolu käsus Selenium
Elemendi olemasolu kontrollimisest ei piisa alati – test peab sageli kinnitama kasutajale kuvatavaid sõnu. Selle juhtumi katavad kaks tekstikäsku.
- verifyTextPresent – tagastab TRUE, kui määratud tekstistring leiti kuskilt lehelt; VALE, kui muidu
- verifyTextNotPresent – tagastab TRUE, kui määratud tekstistringi EI LEIDUD lehel kuskilt; VÄÄR, kui see leiti
Pidage meeles, et need käsud on tõstutundlikud.
Allolev logi näitab sama lehekülge, mida on kaks korda kontrollitud sama fraasi kahe kirjapildiga.
Ülaltoodud stsenaariumis käsitleti käsku „Atlanta to Las Vegas” erinevalt kui käsku „atlanta to Las Vegas”, kuna sõna „Atlanta” täht „A” oli esimesel juhul suurtähega, teisel aga väiketähega. Kui mõlemal juhul kasutati käsku verifyTextPresent, siis üks neist õnnestus, teine aga ebaõnnestus.
Kontrollige elemendi konkreetset asukohta
Paigutusvead harva rikuvad lokaatorit, seega kohalolekukontrollid ei märka neid. Positsioneerimiskäsud täidavad selle tühimiku.
Selenium IDE näitab elemendi asukohta, mõõtes (pikslites), kui kaugel see asub brauseriakna vasakust või ülemisest servast.
- verifyElementPositionLeft – kontrollib, kas määratud pikslite arv ühtib elemendi kaugusega lehe vasakust servast. See tagastab FALSE, kui määratud väärtus ei ühti kaugusega vasakust servast.
- verifyElementPositionTop – kontrollib, kas määratud pikslite arv ühtib elemendi kaugusega lehe ülaservast. See tagastab FALSE, kui määratud väärtus ei ühti kaugusega ülemisest servast.
Allolev skript salvestab eeldatavad pikslite nihked veergu „Väärtus“.
Suhtu nendesse kahte käsku ettevaatlikult. Piksli nihe muutub vastavalt akna suurusele, suumitasemele ja installitud fontidele, seega võib ühes masinas edastatud püsikodeeritud number teises nurjuda.
Oodake käsud sisse Selenium
Kontrollimiskäsk saab kontrollida ainult seda, mis on juba ekraanil, seega liiga vara käivitatud kontroll ebaõnnestub isegi siis, kui rakendus töötab. Wait-käsud lahendavad selle ajastusprobleemi.
Järgmised on ootekäskude tüübid Selenium
ja oodake käske
Need on käsud, mis ootavad enne järgmise käsu juurde liikumist uue lehe laadimist.
näideteks on
- klõpsake JaOota
- tüüpJa oodake
- valiJaOota
Igaüks neist on tavaline toimingukäsk, millele on lisatud AndWait-järelliide, nagu allpool salvestatud samm näitab.
ootama käske
Need on käsud, mis ootavad, kuni määratud tingimus muutub tõeseks, enne kui jätkate järgmise käsuga (olenemata uue lehe laadimisest). Neid käske on sobivam kasutada AJAX-põhistel dünaamilistel veebisaitidel, mis muudavad väärtusi ja elemente kogu lehte uuesti laadimata. Näited:
- oota Pealkirja
- oodakeTextPresenti
- oota Alert
Mõelge allpool toodud Facebooki stsenaariumile.
Saame kasutada kombinatsiooni "klõps" ja "waitForTextPresent", et kontrollida, kas tekst on "Teie sünnipäeva esitamine".
Me ei saa kasutada clickAndWait, kuna lingil „Miks ma pean oma sünnipäeva esitama?” klõpsamisel ei laaditud ühtegi lehte. link. Kui me seda teeme, siis test ebaõnnestub
Sama reegel kehtib ka skripti, mitte navigatsiooni abil sisestatud sisu kohta, mistõttu AJAX-põhised ekraanid peaaegu alati on vaja pigem waitFor kui andWait.
Käskude Assert vs Verify vs waitFor kasutamine Selenium IDE
Algajad valivad sageli vale perekonna ja imestavad seejärel, miks komplekt esimese defekti peale peatub või miks see teatab kahekümnest rikkest, kuigi kõik trace tagasi ühe juurde. Kolm eesliidet vastavad kolmele erinevale küsimusele.
| eesliide | Mida see teeb | Ebaõnnestumise korral | Parim kasutada |
|---|---|---|---|
| väita | Kontrollib koheselt seisukorda | Logib vea ja peatab testijuhtumi | Eeltingimused – sisselogimine, mis peab õnnestuma enne, kui miski muu mõttekas on |
| kontrollima | Kontrollib koheselt seisukorda | Logib vea ja jätkab järgmise käsuga | Sõltumatud kontrollid, näiteks mitu silti ühel kinnituslehel |
| ootama | Küsitlused kuni tingimus saab tõeseks | Logib tõrke pärast ajalõpu möödumist ja jätkab seejärel | Kõik, mis ilmub hilinenult – AJAX-vastused, spinnerid, dialoogid |
Praktiline muster ühendab kõik kolm: kinnita leht, millele sa jõudsid, oota asünkroonselt saabunud elementi ja seejärel kontrolli iga üksikut välja. Selles järjekorras tehes peatab üks vigane navigatsioon testi enneaegselt, samal ajal kui käputäis kosmeetilisi mittevastavusi teatatakse kõik ühe korraga. Sama distsipliin kehtib ka... Selenium koodis kirjutatud testid, mille vasteteks on kõvad väited, pehmed väited ja otsesed ootamised.
Kontrolli ja oota käske praeguses Selenium IDE
. FirefoxÜlaltoodud ekraanipilte tootnud plugin IDE eemaldati ja käskude komplekt loodi praeguse brauserilaienduse jaoks uuesti. Mitmed seleenikeelsed nimed jäid alles, mõned nimetati ümber ja mõned jäeti välja. Allolev tabel seob selles artiklis kasutatud käske nende praeguste vastetega, mis on võetud ametlikust käsurea lähtekoodist. Selenium IDE käskude juhend.
| Selenese pärandkäsk | Käsk praeguses IDE-s |
|---|---|
| verifyElementPresent | kontrollige elemendi olemasolu |
| verifyElementNotPresent | kontrollige, kas elementi pole olemas |
| verifyTextPresent | teksti kontrollimine (ulatus elemendiotsija, mitte kogu lehe ulatuses) |
| verifyTextNotPresent | kontrolli, kas tekst pole õige (ulatus elemendi lokaatorile) |
| kontrolliPealkirja | kinnita pealkiri |
| verifyElementPositionLeft / verifyElementPositionTop | Vastavväärtus puudub — positsiooniväited tühistati |
| klõpsa ja oota, kirjuta ja oota, vali ja oota | AndWaiti järelliidet pole – käsk „open“ juba ootab lehe laadimist. |
| ootaElementPresent | oota elemendi olemasolu, ooteajaga millisekundites |
| oota Alert | kinnitada hoiatus või kinnitada hoiatuse tekst pärast dialoogiboksi ilmumist |
Igapäevatöös on kõige olulisemad kaks erinevust. Esiteks võtavad praegused ootekäsud – „oota, kuni element on olemas“, „oota, kuni element on nähtav“, „oota, kuni element on muudetav“ ja nende negatiivsed kaksikud – igaüks selgesõnalise ooteaja millisekundites, seega ei pea aeglane samm enam jagama ühte globaalset ajalõppu. Teiseks on kadunud leheülene tekstiotsing: kontrollitekst vajab lokaatorit, mis tavaliselt annab niikuinii teravama kontrolli.
Levinumad vead käskudega Verify ja waitFor
Enamik nende käskudega seotud probleemidest ei ole IDE vead. Allolev loend hõlmab kõige sagedamini esinevaid tõrkeid ja iga tõrke lahendusi.
- Element on olemas, aga kontroll ikkagi ebaõnnestub. Kohalolek ja nähtavus on erinevad olekud. CSS-reegli taha peidetud element on DOM-is endiselt olemas, seega ühenda kohaloleku kontroll elemendi „wait for visibility” olemisega, kui test sõltub sellest, kas kasutaja seda tegelikult näeb.
- Tekstikontroll ebaõnnestub identse sõnastuse korral. Kujundusdokumendist kopeeritud tühikud, lõpus olevad tühikud ja lokkis apostroofid ei anna täpset vastet. Tippige oodatud string käsitsi uuesti, mitte kleepige see.
- Ootuskäsu ajalõpp ilmneb lehel, mis on selgelt laadinud. Element asub tavaliselt iframe'i sees. Käivita esmalt `select frame`, vastasel juhul hinnatakse lokaatorit vale dokumendi suhtes.
- clickAndWait hangub ühelehelise rakenduse korral. Navigeerimist ei toimu, seega pole midagi oodata. Asendage see klõpsuga ja sobiva waitFor-käsuga.
- Positsioonikontroll läbib lokaalselt, kuid ebaõnnestub ehitusserveris. Ekraani suurus ja fondi renderdamine erinevad. Eelista kohaloleku- või tekstikontrolli või määra testi alguses selgesõnaline akna suurus.
- Kogu sviit peatub esimese mittevastavuse juures. VERIFIC-käsu asemele salvestati käsk „assert“. Vaheta eesliidet ja käsk annab teada igast veast, mitte ainult esimesest.
Kui skript on need lõksud üle elanud, on järgmine samm tavaliselt salvesta käitusaja väärtused muutujates Seega võrdlevad kontrollid andmeid tegelike andmete, mitte kõvakodeeritud stringidega.






