Vahvista elementti läsnä ja odota komentoa sisään Selenium
⚡ Älykäs yhteenveto
Tarkista elementin läsnäolo ja waitFor-komennot Selenium IDE varmistaa, että sivu sisältää testin odottamat elementit ja tekstin, ja keskeyttää toiston, kunnes dynaaminen ehto toteutuu, ennen kuin seuraava vaihe suoritetaan.

Tallennettu Selenium IDE skripti napsauttaa ja kirjoittaa, mutta se ei koskaan yksinään päätä, toimiiko sovellus oikein. Kaksi komentoryhmää tekevät tämän: todentaa komentoja, jotka tarkistavat sivun tilan, ja odottaa komentoja, jotka pidättävät suoritusta, kunnes sivu on valmis tarkistettavaksi.
⚠️ Huomautus versioista: alla olevat kuvakaappaukset ovat alkuperäisestä Firefox-laajennus Selenium IDE, jota ei enää jaeta, ja he käyttävät sen camelCase Selenese -nimiä. Nykyinen IDE on Chrome, Firefox ja Edge selainlaajennusTässä kuvattu toimintatapa pätee edelleen, mutta useiden komentojen nimiä on muutettu — karttaping taulukko näkyy myöhemmin tässä artikkelissa, ja jokainen alkuperäinen komento ja kuvakaappaus säilytetään täsmälleen sellaisena kuin se julkaistiin.
Tarkista elementin läsnäolo
Voimme käyttää seuraavia kahta komentoa elementin olemassaolon tarkistamiseen:
- verifyElementPresent – palauttaa TRUE, jos määritetty elementti LÖYTYI sivulta; EPÄTOSI, jos toisin
- verifyElementNotPresent – palauttaa TRUE, jos määritettyä elementtiä EI LÖYTYNYT mistään sivulta; EPÄTOSI, jos se on läsnä.
Molemmat komennot ottavat elementin paikannin vuonna Target kenttä — tunnus, nimi, CSS-valitsin, linkkiteksti tai XPath lauseke — eikä kumpikaan tarvitse arvoa.
Alla oleva testiskripti varmistaa, että Käyttäjänimi-tekstiruutu on sisällä Mercury Tours-kotisivu, kun Etunimi-tekstikenttä ei ole. Etunimi-tekstikenttä on itse asiassa elementti, joka on läsnä rekisteröintisivulla Mercury Retket, ei etusivulla.
Koska nämä ovat todentaa komentojen sijaan puolustaa komentoja, lokiin kirjataan virhe ja loput vaiheet suoritetaan edelleen. Tätä eroa käsitellään tarkemmin jäljempänä.
Tarkista tietyn tekstin läsnäolo komennossa Selenium
Elementin olemassaolon tarkistaminen ei aina riitä – testin on usein vahvistettava käyttäjälle näytetyt sanat. Kaksi tekstikomentoa kattavat tämän tapauksen.
- verifyTextPresent – palauttaa TRUE, jos määritetty tekstimerkkijono LÖYTYI jostain sivulta; EPÄTOSI, jos toisin
- verifyTextNotPresent – palauttaa TRUE, jos määritettyä tekstimerkkijonoa EI LÖYTYNYT mistään sivulta; EPÄTOSI, jos se löydettiin
Muista, että nämä komennot erottelevat isot ja pienet kirjaimet.
Alla oleva loki näyttää saman sivun tarkistettuna kahdesti ja saman lauseen kahdella kirjoitusasulla.
Yllä olevassa skenaariossa hakua ”Atlanta to Las Vegas” käsiteltiin eri tavalla kuin hakua ”atlanta to Las Vegas”, koska hakusanan ”Atlanta” kirjain ”A” oli isolla kirjaimella ensimmäisessä ja pienellä kirjaimella toisessa. Kun verifyTextPresent-komentoa käytettiin molemmissa, toinen onnistui ja toinen epäonnistui.
Tarkista elementin tietty sijainti
Asetteluvirheet harvoin rikkovat paikantimen, joten läsnäolotarkistukset eivät niitä havaitse. Paikannuskomennot paikaavat tämän aukon.
Selenium IDE ilmaisee elementin sijainnin mittaamalla (pikseleinä), kuinka kaukana se on selainikkunan vasemmasta tai yläreunasta.
- verifyElementPositionLeft – tarkistaa, vastaako määritetty pikselien määrä elementin etäisyyttä sivun vasemmasta reunasta. Tämä palauttaa FALSE, jos määritetty arvo ei vastaa etäisyyttä vasemmasta reunasta.
- verifyElementPositionTop – tarkistaa, vastaako määritetty pikselien määrä elementin etäisyyttä sivun yläreunasta. Tämä palauttaa FALSE, jos määritetty arvo ei vastaa etäisyyttä yläreunasta.
Alla oleva komentosarja tallentaa odotetut pikselien siirtymät Arvo-sarakkeeseen.
Käsittele näitä kahta komentoa varoen. Pikselioffset muuttuu ikkunan koon, zoomaustason ja asennettujen fonttien mukaan, joten yhdessä koneessa syötetty kiinteästi koodattu numero voi epäonnistua toisessa.
Odota komennot sisään Selenium
Verify-komento voi tarkastaa vain sen, mikä on jo näytöllä, joten liian aikaisin suoritettu tarkistus epäonnistuu, vaikka sovellus toimisikin. Wait-komennot ratkaisevat tämän ajoitusongelman.
Seuraavat ovat odotuskomentojen tyypit Selenium
ja odota-komennot
Nämä ovat komentoja, jotka odottavat uuden sivun latautumista ennen kuin siirrytään seuraavaan komentoon.
esimerkkejä ovat
- napsautaAndWait
- kirjoitaJa odota
- valitseAndOdota
Jokainen niistä on tavallinen toimintokomento, johon on liitetty AndWait-liite, kuten alla oleva tallennettu vaihe osoittaa.
odota komentoja
Nämä ovat komentoja, jotka odottavat tietyn ehdon täyttymistä ennen kuin siirrytään seuraavaan komentoon (riippumatta uuden sivun latauksesta). Nämä komennot sopivat paremmin käytettäviksi AJAX-pohjaisilla dynaamisilla verkkosivustoilla, jotka muuttavat arvoja ja elementtejä lataamatta koko sivua uudelleen. Esimerkkejä:
- odota otsikkoa
- odotaTextPresent
- odota hälytystä
Harkitse alla olevaa Facebook-skenaariota.
Voimme käyttää "click" ja "waitForTextPresent" yhdistelmää vahvistaaksemme tekstin "Anna syntymäpäiväsi" olemassaolon.
Emme voi käyttää clickAndWait-toimintoa, koska sivua ei ladattu, kun napsautettiin "Miksi minun on ilmoitettava syntymäpäiväni?" linkki. Jos teemme niin, testi epäonnistuu
Sama sääntö koskee kaikkea skriptien lisäämää sisältöä navigoinnin sijaan, minkä vuoksi AJAX-ohjatut näytöt melkein aina tarvitaan waitFor eikä andWait.
Assert vs. Verify vs. waitFor -komennot Selenium IDE
Aloittelijat valitsevat usein väärän tuoteperheen ja ihmettelevät sitten, miksi tuoteperhe pysähtyy ensimmäisen vian kohdalla tai miksi se raportoi kaksikymmentä vikaa, jotka kaikki ovat... tractakaisin yhteen. Kolme etuliitettä vastaavat kolmeen eri kysymykseen.
| Etuliite | Mitä se tekee | Epäonnistumisen yhteydessä | Parhaiten käytetty |
|---|---|---|---|
| puolustaa | Tarkistaa tilanteen välittömästi | Kirjaa virheen ja pysäyttää testitapauksen | Edellytykset – kirjautuminen, jonka on onnistuttava ennen kuin mikään muu on järkevää |
| todentaa | Tarkistaa tilanteen välittömästi | Kirjaa virheen lokiin ja jatkaa seuraavalla komennolla | Itsenäiset tarkastukset, kuten useita tarroja yhdellä vahvistussivulla |
| odota | Kyselee, kunnes ehto täyttyy | Kirjaa virheen lokiin aikakatkaisun umpeuduttua ja jatkaa sitten | Kaikki myöhässä näkyvä — AJAX-vastaukset, spinnerit, dialogit |
Käytännöllinen malli yhdistää kaikki kolme: vahvista sivu, jolle päädyit, odota asynkronisesti saapuvaa elementtiä ja tarkista sitten jokainen yksittäinen kenttä. Jos nämä tehdään tässä järjestyksessä, yksi rikkinäinen navigointi pysäyttää testin ennenaikaisesti, ja kourallinen kosmeettisia epäjohdonmukaisuuksia raportoidaan kaikki yhdellä kertaa. Sama kurinalaisuus jatkuu myös Selenium koodilla kirjoitetut testit, joiden vastineita ovat kovat väitteet, pehmeät väitteet ja eksplisiittiset odotukset.
Tarkista ja odota -komennot nykyisessä Selenium IDE
FirefoxYllä olevat kuvakaappaukset tuottanut -plugin-kehityskehitysympäristö poistettiin käytöstä ja komentokehot rakennettiin uudelleen nykyistä selainlaajennusta varten. Useita selenejä koskevia nimiä säilyi, joitakin nimettiin uudelleen ja muutama poistettiin. Alla oleva taulukko yhdistää tässä artikkelissa käytetyt komennot niiden nykyisiin vastineisiin, jotka on otettu virallisesta Selenium IDE-komentoviite.
| Perinteinen Selenese-komento | Komento nykyisessä IDE:ssä |
|---|---|
| verifyElementPresent | varmista, että elementti on läsnä |
| verifyElementNotPresent | tarkista, ettei elementtiä ole |
| verifyTextPresent | tarkista teksti (kohdistettu elementin paikantimeen, ei koko sivuun) |
| verifyTextNotPresent | tarkista, ettei kyseessä ole teksti (rajoitettu elementin paikantimeen) |
| tarkistaTitle | vahvista otsikko |
| verifyElementPositionLeft / verifyElementPositionTop | Ei vastinetta — kantaväitteet hylättiin |
| napsautaJaOdota, kirjoitaJaOdota, valitseJaOdota | Ei AndWait-liitettä — open-komento odottaa jo sivun latausta |
| odotaElementPresent | odota elementin läsnäoloa, odotusaika millisekunteina |
| odota hälytystä | vahvista hälytys tai tarkista hälytysteksti valintaikkunan ilmestymisen jälkeen |
Kaksi eroa on merkittävimpiä päivittäisessä työssä. Ensinnäkin nykyiset odotuskomennot – odota elementin läsnäoloa, odota elementin näkyvyyttä, odota elementin muokattavuutta ja niiden negatiiviset kaksoset – ottavat kukin eksplisiittisen odotusajan millisekunteina, joten hitaan vaiheen ei enää tarvitse jakaa yhtä globaalia aikakatkaisua. Toiseksi koko sivun kattava tekstihaku on poissa: tekstin tarkistus tarvitsee paikantimen, joka yleensä tuottaa joka tapauksessa terävämmän tarkistuksen.
Yleisiä virheitä Verify- ja waitFor-komentojen kanssa
Useimmat näiden komentojen kanssa raportoidut ongelmat eivät johdu IDE:n vioista. Alla oleva luettelo kattaa useimmin esiintyvät virheet ja niiden korjaustavat.
- Elementti on olemassa, mutta tarkistus epäonnistuu silti. Läsnäolo ja näkyvyys ovat eri tiloja. CSS-säännön taakse piilotettu elementti on edelleen läsnä DOM:ssa, joten yhdistä läsnäolotarkistus wait for visible -elementtiin, kun testi on riippuvainen käyttäjän tosiasiallisesta näkemisestä.
- Tekstitarkistus epäonnistuu, jos sanamuoto näyttää identtiseltä. Sitoutuvat välilyönnit, lopussa olevat tyhjät välilyönnit ja suunnitteludokumentista kopioidut kaarevat heittomerkit rikkovat kaikki täydellisen osuman. Kirjoita odotettu merkkijono uudelleen käsin sen sijaan, että liittäisit sen.
- Odotuskomento aikakatkaisee selvästi latautuneella sivulla. Elementti on yleensä iframe-kehyksen sisällä. Suorita ensin select frame -komento, muuten paikannin arvioidaan väärää dokumenttia vasten.
- clickAndWait jumiutuu yksisivuiseen sovellukseen. Navigointia ei tapahdu, joten ei ole mitään odotettavaa. Korvaa se napsautuksella ja sopivalla waitFor-komennolla.
- Paikkatarkistus onnistuu paikallisesti, mutta epäonnistuu koontipalvelimella. Näytön koko ja fontin esitys eroavat toisistaan. Käytä mieluummin läsnäolo- tai tekstitarkistusta tai aseta testin alussa erillinen ikkunan koko.
- Koko sarja pysähtyy ensimmäiseen epäsuhtaan. assert-komento tallennettiin verify-komennon kohdalle. Vaihda etuliite, niin suoritus raportoi kaikki virheet ensimmäisen sijaan.
Kun skripti selviää näistä ansoista, seuraava vaihe on yleensä tallenna ajonaikaiset arvot muuttujiin joten tarkistukset vertautuvat todellisiin tietoihin kovakoodattujen merkkijonojen sijaan.






