Kivételek kezelése Selenium Webdriver (típusok)
⚡ Okos összefoglaló
Kivételkezelés Selenium A WebDriver megőrzi a hibás leállítási parancsotping egy teljes tesztfutás. Java try-catch, többszörös catch blokkok, throw, throws és végül mindegyik más módot ad egy szkriptnek a helyreállításra.
Mi a kivétel?
A kivétel egy olyan hiba, amely egy program végrehajtása során történik. A program futása közben a programozási nyelv egy kivételt generál, amelyet kezelni kell, különben a program összeomlik.
A kivétel azt jelzi, hogy bár az esemény előfordulhat, ez a típusú esemény ritkán fordul elő. Amikor egy metódus nem tudja kezelni a kivételt, akkor a hívó függvénynek kerül. Java, ami a legtöbbet hajtja Selenium csomagokban minden WebDriver kivétel nincs ellenőrizve, így a fordító soha nem kényszerít arra, hogy elkapd – a kezeletlen hibák csak futásidőben jelentkeznek.
A kivételek típusai itt Selenium webdriver
A WebDriverException a hierarchia alaposztálya, és minden alatta lévő kivétel ettől örököl. A táblázat mind a 41 kivételt felsorolja, amelyekkel találkozhatsz, valamint az egyes kivételeket kiváltó feltételt.
| # | kivétel | Amikor bekövetkezik |
|---|---|---|
| 1 | ElementNotVisibleException | A DOM-ban egy meglévő elem rejtett funkciókészlettel rendelkezik. |
| 2 | ElementNotSelectableException | Az elem a DOM-ban van, de nem választható ki, így az interakció lehetetlen. |
| 3 | NoSuchElementException | Az elem nem található a következővel: lokátor szállított. |
| 4 | NoSuchFrameException | Az keret A cél, amelyre váltani szeretnél, nem létezik. |
| 5 | NoAlertPresentException | Váltás egy éber akkor fut, ha nincs riasztás. |
| 6 | NoSuchWindowException | Az átváltandó ablakcélpont nem létezik. |
| 7 | StaleElementReferenceException | A webes elem leválik az aktuális elemről DOM. |
| 8 | MunkamenetNemFoundException | A WebDriver a böngésző bezárása után lép működésbe. |
| 9 | TimeoutException | Egy parancs végrehajtása nem fejeződött be időben – például a keresett elem nem található meg a várakozási időn belül. |
| 10 | WebDriverException | A többi WebDriver kivétel alaposztálya; akkor is keletkezik, amikor a WebDriver közvetlenül a böngésző bezárása után cselekszik. |
| 11 | KapcsolatLezártKivétel | Kapcsolatszakadás van a meghajtóban. |
| 12 | ElementClickInterceptedException | Az eseményeket fogadó elem elrejti a kattintáshoz kért elemet. |
| 13 | ElementNotInteractableException | Az elem jelen van a DOM-ban, de lehetetlen vele interakcióba lépni. |
| 14 | Kivétel a válaszban (ErrorInResponse) | Valami hiba történt a következővel való interakció során: Firefox kiterjesztés vagy a távoli illesztőprogram-kiszolgáló. |
| 15 | Hibakezelő. Ismeretlen kiszolgálókivétel | Helyőrzőként használatos, ha a szerver verem nélkül ad vissza hibát. trace. |
| 16 | ImeActivationFailedException | Az IME motor aktiválása sikertelen. |
| 17 | ImeNotAvailableException | Az IME támogatás nem érhető el. |
| 18 | Bizonytalan tanúsítványkivétel | A navigáció hatására a felhasználói ügynök egy tanúsítványfigyelmeztetés, amit egy érvénytelen vagy lejárt TLS-tanúsítvány okozhat. |
| 19 | ÉrvénytelenArgumentKivétel | Egy argumentum nem tartozik a várt típusba. |
| 20 | Érvénytelen Süti Tartomány Kivétel | A aprósütemény egy másik domain alá kerül hozzáadásra a jelenlegi helyett URL. |
| 21 | Érvénytelen koordináták kivétele | A talált interakciós művelet érvénytelen. |
| 22 | ÉrvénytelenElemÁllapotKivétel | A parancs nem fejezhető be, mert az elem érvénytelen. |
| 23 | Érvénytelen munkamenet-azonosító kivétel | A megadott munkamenet-azonosító nem szerepel az aktív munkamenetek között, tehát nem létezik vagy inaktív. |
| 24 | Érvénytelen váltás erreTargetkivétel | A váltani kívánt keret vagy ablakcélpont nem létezik. |
| 25 | Javascriptkivétel | Hiba történt a végrehajtás során JavaA felhasználó által megadott szkript. |
| 26 | JsonException | A munkamenetet akkor kéri a rendszer, ha a munkamenet még nincs létrehozva. |
| 27 | NoSuchAttributeException | Egy elem attribútuma nem található. |
| 28 | MozogTargetHatáron kívüli kivétel | Az ActionChains move() metódusnak megadott célpont érvénytelen – például „out of the document”. |
| 29 | NoSuchContextException | A mobileszközök tesztelését végző ContextAware nem találja a kért kontextust. |
| 30 | Nincs ilyen süti kivétel | Nem található a megadott elérési útnak megfelelő süti a jelenleg böngészett dokumentum sütijei között. |
| 31 | Nem található kivétel | A WebDriverException egy alosztálya, amely akkor keletkezik, ha egy elem nem létezik a DOM-ban. |
| 32 | Távoli illesztőprogram-kiszolgáló kivétel | A szerver nem válaszol, mert a leírt képességek nem megfelelőek. |
| 33 | Képernyőkép-kivétel | Képernyőt nem lehet rögzíteni. |
| 34 | SessionNotCreatedException | Nem sikerült új munkamenetet létrehozni. |
| 35 | UnableToSetCookieException | Egy illesztőprogram nem tud sütit beállítani. |
| 36 | Váratlan címkenév-kivétel | Egy támogató osztály nem a várt módon kapott webes elemet. |
| 37 | Nem kezelt riasztási kivétel | Van egy riasztás, de a WebDriver nem tudja végrehajtani a riasztási műveletet. |
| 38 | Váratlan riasztási jelen kivétel | Egy váratlan riasztás jelenik meg. |
| 39 | IsmeretlenMetódusKivétel | A kért parancs megegyezik egy ismerttel URL de nem egy módszer erre a konkrét esetre URL. |
| 40 | Elérhetetlen böngészőkivétel | A böngésző nem nyitható meg, vagy valamilyen okból összeomlott. |
| 41 | Nem támogatott parancskivétel | A távoli WebDriver nem a várt módon küld érvényes parancsokat. |
Három domináns a napi hibakeresésben: a NoSuchElementException hibás eredményt jelent. XPath vagy egy nem renderelt elem esetében a TimeoutException azt jelenti, hogy a várakozás túl rövid egy elemhez. AJAX válasz, és a StaleElementReferenceException egy dinamikus újrarenderelés.
Kivételek kezelése a Selenium
Íme a kivételek kezelésére szolgáló szabványos konstrukciók a következőben: Selenium WebDriver. Mindegyik egyszerű Java, így bármilyen helyzetben működik WebDriver szkript extra könyvtárak nélkül.
1. lépés) Próbáld elkapni
Ez a metódus a try és catch kulcsszavak kombinációjával képes kivételeket elkapni. A try parancs a blokk kezdetét jelöli, a catch pedig a try blokk végére kerül, ahol feloldja a kivételt.
try { // Code } catch (Exception e) { // Code for Handling exception }
2. lépés) Több rögzítőblokk
Különböző típusú kivételek léteznek, és egyetlen kódblokk többet is okozhat. Több catch blokk lehetővé teszi, hogy minden típust külön, a saját kódjával kezeljünk. Kettőnél több catch blokkot is használhatunk, és nincs korlátozás arra vonatkozóan, hogy hányat adhatunk hozzá.
try { //Code } catch (ExceptionType1 e1) { //Code for Handling Exception 1 } catch (ExceptionType2 e2) { //Code for Handling Exception 2 }
3. lépés) Dobd
Amikor kivételt szeretnénk generálni, a throw kulcsszó átadja azt futási időben történő kezelésre. A throw kulcsszót akkor használjuk, ha egy kivételt továbbítunk tovább, ahelyett, hogy az aktuális metódusban feloldanánk azt.
public static void anyFunction() throws Exception{ try { // write your code here } catch (Exception b) { // Do whatever you want to perform // Throw the Exception back to the system throw(b); } }
4. lépés: Több kivétel
A throws záradékban különféle kivételeket említhetsz.
public static void anyFunction() throws ExceptionType1, ExceptionType2{ try { // write your code here } catch (ExceptionType1 e1) { // Code to handle exception 1 } catch (ExceptionType2 e2) { // Code to handle exception 2 }
5. lépés) Végül
A finally kulcsszó egy blokkot hoz létre a try blokk alatt. A kulcsszó végrehajtódik, függetlenül attól, hogy történt-e kivétel, így ez a megfelelő hely egy illesztőprogram bezárására vagy egy fájlkezelő feloldására.
try { //Code } catch (ExceptionType1 e1) { //Catch block } catch (ExceptionType2 e2) { //Catch block } catch (ExceptionType3 e3) { //Catch block } finally { //The finally block always executes. }
Kivételinformációk megjelenítésének módszerei
Miután egy kivételt észlelt a rendszer, maga az objektum tartalmazza a diagnosztikai részleteket. A megjelenítéshez a következő módszereket használhatja:
| Módszer | Amit jelent |
|---|---|
| printStackTrace() | Kinyomtatja a verem tartalmát trace, a kivétel neve és egyéb hasznos leírás. |
| toString () | Egy szöveges üzenetet ad vissza, amely leírja a kivétel nevét és leírását. |
| getMessage() | A kivétel leírását önmagában jeleníti meg. |
Párosítsd ezeket egy, a catch blokkon belül készített képernyőképpel, és egy sikertelen futtatás megmutatja, hogy mi tört el, és hogyan nézett ki az oldal.
