Változók tárolása, visszhang, figyelmeztetés, előugró ablakok kezelése Selenium IDE

⚡ Okos összefoglaló

Parancsok tárolása itt: Selenium Az IDE futásidejű értékeket elnevezett változókba menti, az echo parancs kiírja őket a naplóba, és egy dedikált parancscsalád kezeli a riasztásokat, a megerősítő párbeszédablakokat és a több böngészőablak közötti váltást.

  • 🔘 Hozz létre egy változót: A store parancs a következő értéket veszi fel: Target és a változó nevét az Érték mezőben.
  • ☑️ Olvasd vissza: A nevet ${ } karakterek közé kell tenni, bárhol is legyen szó célpontról vagy értékről.
  • Nyomtatás hibakereséshez: Az echo egy literális karakterláncot vagy változót ír közvetlenül az IDE naplóba.
  • 🧪 A riasztások automatikusan elfogadásra kerülnek: Az IDE az OK gombra kattint, ezért használd a storeAlert parancsot az üzenet szövegének rögzítéséhez.
  • 🇧🇷 A megerősítésekhez döntésre van szükség: Helyezze a chooseOkOnNextConfirmation parancsot a párbeszédpanelt megnyitó parancs elé.
  • 📊 Ablakváltás: A selectWindow egy ablakcímet céloz meg, a null cél pedig a szülőablakot adja vissza.

Változók, visszhang, riasztás és felugró ablakok kezelése Selenium IDE

Ebben az oktatóanyagban megismerkedhetsz a tárolási parancsokkal, az echo parancsgal, valamint a riasztások és felugró ablakok kezelésével. Selenium IDEEzek a parancsok együttesen egy fixen rögzített szkriptet olyanná alakítanak, amely reagál az alkalmazás futásidejű visszaadására.

⚠️ 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-ben, és a parancsok a camelCase selenese neveit használják. A jelenlegi Chrome, Firefox Az Edge kiterjesztés megtartja ugyanazt a viselkedést, de a legtöbb parancsnevet szóközökkel írja. Egy mapping A táblázat a cikk vége felé látható, és minden eredeti parancs és képernyőkép a közzétett formában kerül megőrzésre.

Selenium IDE változók

bolt

Változók tárolására Selenium IDE-ben a tárolni parancs. Az alábbi ábra a „tutorial” értéket egy „myVariable” nevű változóban tárolja.

Selenium IDE tárolási parancs a tutorial értékével, amely a myVariable-ba van mentve.

A változó eléréséhez egyszerűen tegye ${ … } szimbólum közé. Például a „myVariable” értékének a „userName” szövegmezőbe való beírásához Mercury Tours, írja be a ${myVariable} értéket az Érték mezőbe.

Selenium IDE típusú parancs a felhasználónév szövegmező Érték mezőjében a ${myVariable} paraméter használatával

Visszhang parancs Selenium IDE

Egy tárolt változó láthatatlan, amíg valami ki nem írja, és ez az, amit a visszhang parancs teszi. Lejátszás közben egy üzenetet ír az IDE naplóablakába, ami a leggyorsabb módja annak, hogy megerősítsük, hogy egy tárolási parancs rögzítette a várt eredményt, mielőtt állításokat építenénk rá.

A parancs mindkét formát elfogadja:

  • Egy literális karakterlánc. Tedd be a szöveget a Target mező, például Bejelentkezési lépés befejezve, egy ellenőrzőpont megjelöléséhez egy hosszú szkriptben.
  • Egy változó. Helyezze el a ${myVariable} értéket a Target mezőben, és a név helyett a tárolt érték kerül kinyomtatásra.

Két szokás teszi az echo parancsot sokkal hasznosabbá, mint amilyennek elsőre tűnik. Nyomtasson ki egy változót közvetlenül a létrehozó store parancs után, így hiba keletkezik. traca rögzítéshez, nem pedig a húsz lépéssel későbbi állításhoz. És minden üzenet elé illessze be a hozzá tartozó lépést, mivel a naplópanel minden parancsot egyetlen listában jelenít meg. Vegye figyelembe, hogy az echo csak a naplóba ír – soha nem változtatja meg az oldalt és soha nem bukik meg egy teszten, így biztonságosan véglegesen benne hagyható egy szkriptben.

StoreElementPresent

Ez a parancs a megadott elem jelenlététől függően vagy „igaz”, vagy „hamis” értéket tárol. Az alábbi szkript a „igaz” logikai értéket a „var1” változóba, a „hamis” értéket pedig a „var2” változóba tárolja. Az ellenőrzéshez az echo parancsot fogjuk használni a var1 és var2 értékeinek megjelenítéséhez. Az alap URL az alábbi illusztrációhoz a következőre volt beállítva: Mercury A túrák honlapja.

Selenium Az IDE storeElementPresent a var1 értékére igaz, a var2 értékére pedig hamis értéket ment, és megjelenik a naplóban.

StoreText

Ez a parancs egy elem belső szövegének változóba tárolására szolgál. Az alábbi ábra a Facebook regisztrációs oldalán található h1 tag belső szövegét egy „textVar” nevű változóba tárolja.

Selenium IDE storeText parancs beolvassa a css=h1 értéket a textVar változóba

Mivel ez az egyetlen ilyen jellegű elem az oldalon, biztonságosan használhatjuk a „css=h1”-et célpontként. Az alábbi kép ezt mutatja Selenium Az IDE képes volt elmenteni a „Sign Up” karakterláncot a „textVar” változóba, mivel az echo helyesen nyomtatta ki az értékét.

Selenium IDE naplópanel kinyomtatja a Sign Up értéket a textVar-ban tárolt értékként.

Figyelmeztetések, előugró és többszörös Windows

A riasztások valószínűleg a felugró ablakok legegyszerűbb formái. A leggyakoribb Selenium A riasztások kezelésére használt IDE-parancsok a következők:

Figyelmeztetések Felhasználás

assertAlert

assertNotAlert

lekéri a riasztás üzenetét, és egy megadott karakterlánc értékkel szemben érvényesíti azt.

assertAlertPresent

assertAlertNotPresent

kijelenti, hogy van-e riasztás vagy nincs
storeAlert lekéri a riasztási üzenetet, és egy megadott változóban tárolja
storeAlertPresent TRUE értéket ad vissza, ha riasztás van jelen, FALSE értéket egyébként

verifyAlert

verifyNotAlert

lekéri a riasztás üzenetét, és ellenőrzi, hogy az megegyezik-e a megadott karakterlánc értékével

verifyAlertPresent

verifyAlertNotPresent

ellenőrzi, hogy van-e riasztás vagy nincs

Ne felejtse el ezt a két dolgot, amikor riasztásokkal dolgozik:

  • Selenium Az IDE automatikusan rákattint a riasztási ablak OK gombjára, így a tényleges riasztást nem fogja látni.
  • Selenium Az IDE nem tudja kezelni azokat a riasztásokat, amelyek az oldal onload() függvényén belül keletkeznek. Csak azokat a riasztásokat kezeli, amelyek az oldal teljes betöltése után keletkeznek.

Ebben a példában a storeAlert parancsot használjuk annak bemutatására, hogy bár Selenium Az IDE nem jelenítette meg a tényleges riasztást, de az üzenetet továbbra is sikerült lekérnie.

Step 1) In Selenium IDE, állítsd be az alapot URL a http://jsbin.com címre. A teljes URL a http://jsbin.com/usidix címen található. Ezek a jsbin kódrészletek a következő időpontból származnak: Firefox-plugin korszak, és előfordulhat, hogy már nem oldódik meg; minden olyan oldal, amelyen van egy riasztást kiváltó gomb, ugyanazt az eredményt reprodukálja.

Step 2) Hozd létre a szkriptet az alábbiak szerint. A click parancs a Go! gombra irányít, a storeAlert az üzenetet az alertMessage üzenetbe rögzíti, az echo pedig kinyomtatja.

Selenium IDE szkript click, storeAlert és echo parancsokkal a jsbin alert demóoldalon

Step 3) Futtassa a szkriptet, és ne számítson a tényleges riasztás megjelenésére. Az alábbi naplópanel a rögzített üzenetet mutatja, annak ellenére, hogy a párbeszédpanel soha nem volt látható.

Selenium IDE napló, amely a storeAlert által lejátszás után lekért riasztási szöveget mutatja

visszaigazolások

A megerősítések olyan felugró ablakok, amelyeken egy OK és egy MÉGSE gomb látható, szemben a riasztásokkal, amelyeken csak az OK gomb látható. A megerősítések kezeléséhez használható parancsok tükrözik a riasztási parancsokat.

  • assertConfirmation / assertNotConfirmation
  • assertConfirmationPresent / assertConfirmationNotPresent
  • bolt Megerősítés
  • storeConfirmationPresent
  • verifyConfirmation / verifyNotConfirmation
  • verifyConfirmationPresent / verifyConfirmationNotPresent

Ezenkívül ezek a parancsok azt is jelzik, hogy Selenium melyik gombot válassza, az OK-t vagy a MÉGSE-t.

  • válaszd az OkAktívMegerősítésnél / válaszd az OkAktívMegerősítésnélÉsVárj
  • válassza a CancelOnNextConfirmation lehetőséget

Helyezze el ezeket a parancsokat előtt a parancs, amely aktiválja a megerősítő ablakot, így Selenium Az IDE előre tudja, melyik opciót kell választani. Ismétlem, a szkript végrehajtása során nem fogod látni a tényleges megerősítő ablakot.

Teszteljünk egy weboldalt egy olyan gombbal, amely úgy van kódolva, hogy jelezze, hogy a felhasználó az OK vagy a MÉGSE gombra kattintott.

Step 1) In Selenium IDE, állítsd be az alapot URL a http://jsbin.com címre. A teljes URL A címe http://jsbin.com/enifaf.

Step 2) Hozd létre a szkriptet az alábbiak szerint. Ezúttal először az OK gombot fogjuk megnyomni.

Selenium IDE szkript elhelyezése a chooseOkOnNextConfirmation opcióval a párbeszédpanelt megnyitó kattintás előtt

Step 3) Futtassa a szkriptet, és vegye figyelembe, hogy nem látja a tényleges megerősítést, de a weboldal továbbra is közli, hogy melyik gomb van érvényben. Selenium IDE megnyomva.

Tesztoldal, amely arról számol be, hogy a megerősítő párbeszédpanel OK gombját megnyomták

Step 4) Cserélje le a chooseOkOnNextConfirmation parancsot a chooseCancelOnNextConfirmation parancsra, és futtassa újra a szkriptet. Az oldal most az ellenkező választási lehetőséget jeleníti meg.

Selenium Az IDE szkript szerkesztve, hogy a chooseOkOnNextConfirmation helyett a chooseCancelOnNextConfirmation-t használja.

Többszörös Windows

Ha egy olyan hivatkozásra kattintasz, amely egy külön ablakot nyit meg, először utasítanod kell Selenium IDE-ben az ablak kiválasztásához, mielőtt hozzáférhetnél a benne lévő elemekhez. A korábbi IDE-ben az ablak címét használod helymeghatározóként.

A selectWindow parancsot használjuk az ablakok közötti váltáshoz.

A http://jsbin.com/ocinaj/1 linket fogjuk használni, amelynek címe „Első ablak”. Az oldalon található „ide” hivatkozás új ablakban nyitja meg a Facebookot, majd erre utasítjuk Selenium Az IDE a következőket tegye:

  • Vigye át az irányítást a szülőablakból az újonnan elindított Facebook ablakba a selectWindow paranccsal, az ablak címét helymeghatározóként megadva.
  • Ellenőrizze az új ablak címét.
  • Jelöld ki újra az eredeti ablakot a selectWindow paranccsal, amelynek célhelye „null”.
  • Ellenőrizze a jelenleg kiválasztott ablak címét.

A fenti terv az itt látható négylépéses sorozattá alakul át.

A szülőablakról az új ablakra és vissza való váltás diagramja

Step 1) Állítsa be az alapot URL a http://jsbin.com oldalra.

Step 2) Hozd létre a szkriptet az alábbiak szerint.

Selenium IDE szkript a selectWindow, pause és verifyTitle metódusok használatával két ablak közötti mozgáshoz

A pause parancsra szükségünk van ahhoz, hogy megvárjuk az újonnan indított ablak betöltődését, mielőtt elolvashatnánk a címét.

Step 3) Hajtsa végre a szkriptet. Vegyük észre, hogy a próbaper sikeresen átment, ami azt jelenti, hogy váltani tudtunk az ablakok között és ellenőrizni a címüket.

Zöld passz eredménye Selenium IDE, miután mindkét ablakcímet ellenőrizték

Mindig ne feledd, hogy a selectWindow cél „null” értékre állítása automatikusan a szülőablakot választja ki – ebben az esetben azt az ablakot, ahol a „link=here” elem található.

Jegyzet: A Facebook megváltoztatta az oldal címét a bemutató létrehozása óta. Módosítsa ennek megfelelően a szkriptben a várt címet.

Modern Selenium Ezeknek a parancsoknak az IDE-megfelelői

Az FirefoxA -plugin IDE-t ekkor vonták vissza: Firefox átkerült a WebExtensions architektúrára, és a jelenlegi Chrome-ra, Firefox Az Edge kiterjesztés a legtöbb Selenese parancsot átnevezte szóközös formátumúra. A viselkedés változatlan, így az alábbi táblázat elegendő a fenti szkriptek aktuális telepítéshez való beolvasásához.

Régi parancs ebben az oktatóanyagban Jelenlegi Selenium IDE parancs
tárolni tárolni
visszhang visszhang
áruháziSzöveg szöveg tárolása
storeElementPresent tároló elem jelenléte (vagy assert elem jelenléte)
assertAlert / verifyAlert riasztás érvényesítése / riasztás ellenőrzése
VálasszonOkTovábbMegerősítést válassza az OK lehetőséget a következő megerősítéskor
válassza a CancelOnNextConfirmation lehetőséget a következő megerősítéskor válaszd a Mégsem lehetőséget
selectWindow (cím mint cél) ablak kiválasztása handle=${handle}-tel

Két különbséget érdemes kiemelni. A promptoknak, amelyeket a korábbi cikk nem tárgyal, mostantól saját parancsaik vannak: válasz a következő kérdésre megtervezi a választ, mielőtt megjelenik a párbeszédpanel, és webdriver válasz látható promptban egy már megnyitott promptba gépel. Az ablakváltás pedig már nem az oldal címétől függ. Futtatás kirakatkilincs először egy fogantyút rögzíteni, majd átadni handle=${a_kezed} ablak kiválasztásához. Ez a módosítás megszünteti a fenti megjegyzésben leírt hibamódot, ahol egy webhely egyszerűen átnevezi az oldalát, és a szkript nem találja meg az ablakot. A hivatalos Selenium IDE projekt webhely felsorolja a teljes aktuális parancskészletet.

GYIK

Igen. A ${myVariable} és a ${myvariable} két különböző változóra hivatkozik, és egy soha nem tárolt változóra való hivatkozás üres karakterláncot eredményez, nem pedig hibát. Használjon egyetlen elnevezési konvenciót egy programcsomagon belül a csendes üres karakterek elkerülése érdekében.

Igen. A ${ } szintaxis kibővül bármely Target vagy Érték mezőben működik, tehát egy megnyitott parancson, egy XPath-on vagy egy CSS-szelektoron belül. Így alakul át egy rögzített szkript a futás során korábban rögzített adatok által vezérelt szkriptté.

A Selenese nem használ matematikai operátorokat. Használd az execute script parancsot egy kis JavaSzkriptkifejezés, amely beolvassa a változót és visszaadja az eredményt, majd tárolja a visszatérési értéket. Ne feledd, hogy minden tárolt érték karakterláncként érkezik, ezért először konvertáld azt.

Tekintsd őket egyetlen tesztre lokálisként. Egy korábbi teszt által beállított értékre való támaszkodás a tesztcsomag sorrendfüggővé és nehezen hibakereshetővé teszi, ezért a teszthez szükséges adatokat tárold el a teszten belül, vagy olvasd be egy adatfájlból a teszt elején.

Egy prompthoz szövegre van szükség, nem csak egy gombválasztásra. Futtassa a választ a következő promptban úgy, hogy a válasz az Érték mezőben legyen a megnyitó parancs előtt, vagy használja a webdriver válaszát látható promptban, amikor a párbeszédablak már a képernyőn van.

A gépi tanulási eszközök képesek egy egyszerű nyelvű forgatókönyv leírásából kiindulva parancssorozatot javasolni, és pontosabb helymeghatározókat javasolni, mint amit egy rögzítő előállít. A mesterséges intelligencia által támogatott helymeghatározó javítás is segít, mivel az átnevezett elem a szokásos oka annak, hogy egy tárolt érték üresen áll vissza.

Igen. Exportálja a tesztet ide: Java or Python, majd hagyd, hogy a Copilot a lapos parancslistát oldalobjektumokká és újrafelhasználható várakozási időkké alakítsa át. Ellenőrizd kézzel a riasztáskezelést, mert a generált kód gyakran feltételez egy látható párbeszédpanelt, amelyet az IDE már elvetett.

A cím alapú kijelölés kétértelművé válik, és előfordulhat, hogy a rossz ablakot választjuk. Pontosan ezért részesíti előnyben a jelenlegi IDE a fogantyúkat: rögzítsük az egyiket a kirakat fogantyújával közvetlenül az ablak megnyílása után, majd váltsunk a handle=${yourHandle} értékkel.

Foglald össze ezt a bejegyzést a következőképpen: