Ellenőrizd az elem jelenlétét és várd be a parancsot Selenium
⚡ Okos összefoglaló
Ellenőrizze az elem jelenlétét, és waitFor parancsokat adjon meg Selenium Az IDE ellenőrzi, hogy egy oldal tartalmazza-e a teszt által várt elemeket és szöveget, és szünetelteti a lejátszást, amíg egy dinamikus feltétel igazzá nem válik, mielőtt a következő lépés lefutna.
Egy felvett Selenium IDE A szkriptek kattintásokat és típusokat generálnak, de önmagában soha nem dönti el, hogy az alkalmazás megfelelően viselkedett-e. Két parancscsalád működik így: ellenőrzése parancsok, amelyek ellenőrzik az oldal állapotát, és várjon parancsok, amelyek végrehajtását mindaddig felfüggesztik, amíg az oldal ellenőrzésre kész nem lesz.
⚠️ Megjegyzés a verziókkal kapcsolatban: az alábbi képernyőképek az eredetiből származnak Firefox-bővítmény Selenium IDE, ami már nem terjed, és a camelCase selenese neveket használják. A jelenlegi IDE egy Chrome, Firefox és Edge böngésző kiterjesztéseAz itt leírt viselkedés továbbra is érvényes, de számos parancs neve megváltozott – egy térképping A táblázat a cikk későbbi részében található, és minden eredeti parancs és képernyőkép pontosan a közzétett formában kerül megőrzésre.
Ellenőrizze az elem jelenlétét
A következő két paranccsal ellenőrizhetjük egy elem jelenlétét:
- verifyElementPresent – IGAZ értéket ad vissza, ha a megadott elem TALÁLT az oldalon; HAMIS, ha másképp
- verifyElementNotPresent – IGAZ értéket ad vissza, ha a megadott elem NEM TALÁLHATÓ az oldalon; HAMIS, ha jelen van.
Mindkét parancs egy elemet fogad el. lokátor a Target mező — egy azonosító, egy név, egy CSS-szelektor, egy hivatkozás szövege vagy egy XPath kifejezés – és egyiknek sem kell értéket megadnia.
Az alábbi tesztszkript ellenőrzi, hogy a UserName szövegmező jelen van-e a Mercury Bejárások kezdőlapja, míg a Keresztnév szövegmező nem. A Keresztnév szövegmező valójában egy elem, amely a Regisztráció oldalán található Mercury Túrák, nem a kezdőlapon.
Mert ezek azok ellenőrzése parancsok helyett érvényesíteni parancsok esetén hiba kerül a naplóba, de a fennmaradó lépések továbbra is futnak. Ezt a különbségtételt részletesebben ismertetjük alább.
Bizonyos szövegek jelenlétének ellenőrzése a parancsban Selenium
Nem mindig elég ellenőrizni egy elem létezését – egy tesztnek gyakran meg kell erősítenie a felhasználónak megjelenített szavakat. Két szöveges parancs fedi le ezt az esetet.
- verifyTextPresent – IGAZ értéket ad vissza, ha a megadott szöveges karakterláncot TALÁLT valahol az oldalon; HAMIS, ha másképp
- verifyTextNotPresent – IGAZ értéket ad vissza, ha a megadott szöveges sztring NEM TALÁLHATÓ az oldalon; HAMIS, ha megtalálták
Ne feledje, hogy ezek a parancsok megkülönböztetik a kis- és nagybetűket.
Az alábbi napló ugyanazt az oldalt mutatja, kétszer ellenőrizve ugyanazon kifejezés két helyesírási változatával.
A fenti forgatókönyvben az „Atlanta to Las Vegas” és az „atlanta to Las Vegas” útvonalakat másképp kezelték, mivel az „Atlanta” név „A” betűje az elsőn nagybetűvel, a másikon pedig kisbetűvel volt írva. Amikor a verifyTextPresent parancsot mindkettőn használták, az egyik sikeres volt, míg a másik nem.
Ellenőrizze az elem meghatározott pozícióját
Az elrendezési hibák ritkán érintik a lokátort, így a jelenlét-ellenőrzések ezeket nem veszik figyelembe. A pozícióparancsok ezt a hiányosságot pótolják.
Selenium Az IDE az elem helyzetét úgy jelzi, hogy megméri (pixelben), milyen messze van a böngészőablak bal vagy felső szélétől.
- verifyElementPositionLeft – ellenőrzi, hogy a megadott számú képpont egyezik-e az elem távolságával az oldal bal szélétől. Ez FALSE-t ad vissza, ha a megadott érték nem egyezik a bal széltől mért távolsággal.
- verifyElementPositionTop – ellenőrzi, hogy a megadott számú képpont egyezik-e az elem távolságával az oldal felső szélétől. Ez FALSE-t ad vissza, ha a megadott érték nem egyezik a felső éltől való távolsággal.
Az alábbi szkript rögzíti a várható pixel eltolásokat az Érték oszlopban.
Óvatosan kezelje ezt a két parancsot. A pixel eltolás az ablakmérettel, a nagyítási szinttel és a telepített betűtípusokkal együtt változik, így egy fixen kódolt szám, amely az egyik gépen átmegy, egy másikon hibát okozhat.
Várja meg a parancsokat Selenium
Egy verify parancs csak azt tudja ellenőrizni, ami már a képernyőn van, így egy túl korán lefutott ellenőrzés akkor is meghiúsul, ha az alkalmazás működik. A wait parancsok megoldják ezt az időzítési problémát.
Az alábbiakban bemutatjuk a várakozási parancsok típusait Selenium
és Várj parancsokat
Ezek olyan parancsok, amelyek megvárják az új oldal betöltését, mielőtt a következő parancsra lépnének.
Példák
- kattintson és várjon
- típusÉs Várj
- válasszon és várjon
Mindegyik egy átlagos műveleti parancs, amelyhez az AndWait utótag tartozik, ahogy az alábbi rögzített lépés is mutatja.
várjon parancsokra
Ezek olyan parancsok, amelyek megvárják egy meghatározott feltétel igazzá válását, mielőtt a következő parancsra lépnének (függetlenül az új oldal betöltődésétől). Ezek a parancsok inkább AJAX-alapú dinamikus webhelyeken használhatók, amelyek az egész oldal újratöltése nélkül változtatják meg az értékeket és az elemeket. Példák:
- várd a címet
- várjon a szövegre
- várj ForAlert
Fontolja meg az alábbi Facebook-forgatókönyvet.
A „click” és a „waitForTextPresent” kombinációjával ellenőrizhetjük a „Születésnapod megadása” szöveg meglétét.
Nem tudjuk használni a clickAndWait alkalmazást, mert a „Miért kell megadnom a születésnapomat?” gombra kattintáskor egyetlen oldal sem töltődött be. link. Ha megtesszük, a teszt kudarcot vall
Ugyanez a szabály vonatkozik minden olyan tartalomra, amelyet szkriptek, és nem navigáció segítségével injektálnak, ezért AJAX-vezérelt képernyők szinte mindig waitFor szükséges az andWait helyett.
Assert vs Verify vs waitFor parancsok a következőben: Selenium IDE
A kezdők gyakran rossz családot választanak, majd azon tűnődnek, hogy egy csomag miért áll meg az első hibánál, vagy miért jelent húsz hibát, miközben mind tracvissza az egyeshez. A három előtag három különböző kérdésre ad választ.
| prefix | Mit csinál | Hiba esetén | A legjobban használható |
|---|---|---|---|
| érvényesíteni | Azonnal ellenőrzi a feltételt | Naplózza a hibát és leállítja a tesztesetet | Előfeltételek – egy sikeres bejelentkezés, mielőtt bármi más értelmet nyerne |
| ellenőrzése | Azonnal ellenőrzi a feltételt | Naplózza a hibát, és folytatja a következő paranccsal. | Független ellenőrzések, például több címke egy visszaigazoló oldalon |
| várj | Lekérdezések, amíg a feltétel igazzá nem válik | Naplózza a hibát az időkorlát lejárta után, majd folytatja | Bármi, ami későn jelenik meg – AJAX válaszok, spinnerek, párbeszédek |
Egy praktikus minta mindhármat ötvözi: megerősítjük az oldalt, amelyre érkeztünk, várunk az aszinkron módon érkező elemre, majd ellenőrizzük az egyes mezőket. Ebben a sorrendben végrehajtva azt jelenti, hogy egyetlen hibás navigáció is leállítja a tesztet, miközben néhány kozmetikai eltérést egyetlen futtatásban jelent a rendszer. Ugyanez a fegyelem érvényesül a következőben is: Selenium kódban írt tesztek, ahol a megfelelőik a kemény állítások, a lágy állítások és az explicit várakozások.
Ellenőrző és Várakozó parancsok az Aktuálisban Selenium IDE
Az FirefoxA fenti képernyőképeket létrehozó -plugin IDE-t visszavonták, és a parancskészletet újraépítették a jelenlegi böngészőbővítményhez. Számos szelén név megmaradt, néhányat átneveztek, és néhányat elhagytak. Az alábbi táblázat a cikkben használt parancsokat a hivatalos megfelelőikhez rendeli. Selenium IDE parancsreferencia.
| Örökölt szelén parancs | Parancs az aktuális IDE-ben |
|---|---|
| verifyElementPresent | elem jelenlétének ellenőrzése |
| verifyElementNotPresent | ellenőrizze, hogy nincs-e jelen elem |
| verifyTextPresent | szöveg ellenőrzése (egy elemkeresőre korlátozva, nem az egész oldalra) |
| verifyTextNotPresent | nem szöveg ellenőrzése (egy elemlokátorra korlátozva) |
| ellenőrizze a címet | cím ellenőrzése |
| verifyElementPositionLeft / verifyElementPositionTop | Nincs megfelelője – a pozícióállításokat elvetették |
| kattintsonÉsVárjon, írja beÉsVárjon, válasszaÉsVárjon | Nincs AndWait utótag – az open parancs már vár az oldal betöltésére |
| waitForElementPresent | várjon az elem jelenlétére, ezredmásodpercben megadott várakozási idővel |
| várj ForAlert | riasztás aktiválása vagy a riasztási szöveg ellenőrzése a párbeszédpanel megjelenése után |
Két különbség számít a mindennapi munkában a legjobban. Először is, a jelenlegi wait parancsok – wait for element present (várakozás jelenlévő elemre), wait for element visible (várakozás látható elemre), wait for element editable (várakozás szerkeszthető elemre) és negatív ikerpárjaik – mindegyike explicit várakozási időt vesz igénybe milliszekundumban, így egy lassú lépésnek már nem kell egyetlen globális időtúllépést megosztania. Másodszor, az oldalszintű szövegkeresés megszűnt: az ellenőrző szöveghez lokátorra van szükség, ami általában élesebb ellenőrzést eredményez.
Gyakori hibák a Verify és waitFor parancsokkal
A parancsokkal kapcsolatos legtöbb jelentett probléma nem az IDE hibája. Az alábbi lista a leggyakrabban előforduló hibákat és az egyes hibák megoldását ismerteti.
- Az elem létezik, de az ellenőrzés továbbra is sikertelen. A jelenlét és a láthatóság különböző állapotok. Egy CSS-szabály mögött elrejtett elem továbbra is jelen van a DOM-ban, ezért párosítsd a jelenlét-ellenőrzést a láthatóságra váró elemmel, ha a teszt attól függ, hogy a felhasználó ténylegesen látja-e azt.
- A szövegellenőrzés sikertelennek tűnik azonosnak tűnő megfogalmazások esetén. A tervdokumentumból másolt nem törhető szóközök, a sor végén lévő szóközök és a göndör aposztrófok mind pontos egyezést eredményeznek. A várt karakterláncot kézzel kell újra beírni a beillesztés helyett.
- Egy várakozási parancs időtúllépést jelez egy olyan oldalon, amely egyértelműen betöltődött. Az elem általában egy iframe-en belül található. Először futtassa a select frame parancsot, különben a lokátor a rossz dokumentum alapján lesz kiértékelve.
- A clickAndWait lefagy egy egyoldalas alkalmazásnál. Nincs navigáció, így nincs mire várni. Cserélje le egy kattintással és a megfelelő waitFor paranccsal.
- A pozícióellenőrzés helyben sikeres, de a build szerveren meghiúsul. A képernyőméret és a betűtípus-megjelenítés eltérő. Inkább jelenlét- vagy szövegellenőrzést végezz, vagy állíts be explicit ablakméretet a teszt elején.
- Az egész kíséret megáll az első eltérésnél. Egy assert parancs került rögzítésre egy verify parancs helyén. Váltsd meg az előtagot, és a futtatás minden hibát jelenteni fog, nem csak az elsőt.
Miután egy szkript túléli ezeket a csapdákat, a következő lépés általában a következő: futásidejű értékek tárolása változókban így az ellenőrzések valós adatokkal, nem pedig fixen kódolt karakterláncokkal hasonlítódnak össze.






