Unntakshåndtering inn Selenium Webdriver (typer)
⚡ Smart oppsummering
Unntakshåndtering i Selenium WebDriver hindrer en mislykket kommando i å stoppeping en hel testkjøring. Java try-catch, flere catch-blokker, kast, kast og til slutt gi hver av dem et skript en annen måte å gjenopprette på.
Hva er et unntak?
Et unntak er en feil som oppstår når et program kjøres. Mens et program kjører, genererer programmeringsspråket et unntak som må håndteres, ellers krasjer programmet.
Unntaket indikerer at selv om hendelsen kan forekomme, skjer denne typen hendelse sjelden. Når en metode ikke er i stand til å håndtere unntaket, kastes den til dens kallende funksjon. Java, som driver mest Selenium I programseriene er alle WebDriver-unntak ukontrollert, slik at kompilatoren aldri tvinger deg til å fange det – en ubehandlet feil dukker bare opp under kjøretid.
Typer unntak i Selenium webdriver
WebDriverException er basisklassen i hierarkiet, og alle unntak nedenfor arver fra den. Tabellen viser alle 41 unntakene du kan møte, sammen med betingelsen som utløser hvert av dem.
| # | Unntak | Når det skjer |
|---|---|---|
| 1 | ElementNotVisibleException | Et eksisterende element i DOM-en har en funksjon satt som skjult. |
| 2 | ElementIkkevalgbartUnntak | Elementet er i DOM-en, men kan ikke velges, så interaksjon er umulig. |
| 3 | NoSuchElementException | Elementet ble ikke funnet med locator medfølgende. |
| 4 | IngenSlikRammeUnntak | Ocuco ramme Målet som skal byttes til finnes ikke. |
| 5 | NoAlertPresentException | En bytte til en varsling kjører når det ikke vises et varsel. |
| 6 | NoSuchWindowException | Vindusmålet som skal byttes til finnes ikke. |
| 7 | Unntak av foreldet elementreferanse | Nettelementet er frakoblet fra gjeldende DOM. |
| 8 | Unntak fra økten | WebDriveren aktiveres etter at du har avsluttet nettleseren. |
| 9 | Unntak for tidsavbrudd | En kommando ble ikke fullført i tide – for eksempel ble ikke elementet som ble søkt etter funnet i ventetiden. |
| 10 | WebDriverException | Basisklasse for de andre WebDriver-unntakene; også generert når WebDriver-en fungerer rett etter at du lukker nettleseren. |
| 11 | TilkoblingLukketUnntak | Det er en frakobling i driveren. |
| 12 | ElementKlikkAvlyttetUnntak | Elementet som mottar hendelsene skjuler elementet som forespurtes for klikket. |
| 13 | ElementIkkeInteraktivUnntak | Elementet finnes i DOM-en, men det er umulig å samhandle med det. |
| 14 | Feil i svarUnntak | Noe feilet under samhandling med Firefox utvidelse eller den eksterne driverserveren. |
| 15 | ErrorHandler.UkjentServerUnntak | Brukes som en plassholder når serveren returnerer en feil uten en stakk trace. |
| 16 | Tidsaktivering mislyktesUnntak | Aktivering av IME-motoren mislyktes. |
| 17 | TidIkkeTilgjengeligUnntak | IME-støtte er ikke tilgjengelig. |
| 18 | Usikkert sertifikatunntak | Navigasjonen fikk brukeragenten til å treffe en sertifikatadvarsel, noe et ugyldig eller utløpt TLS-sertifikat kan forårsake. |
| 19 | Ugyldig argumentunntak | Et argument tilhører ikke den forventede typen. |
| 20 | Ugyldig informasjonskapseldomeneunntak | A cookie er lagt til under et annet domene i stedet for det nåværende URL. |
| 21 | Ugyldige koordinaterUnntak | Den samsvarende interagerende operasjonen er ikke gyldig. |
| 22 | Ugyldig elementtilstandunntak | Kommandoen kan ikke fullføres fordi elementet er ugyldig. |
| 23 | Ugyldigøkt-IDunntak | Den oppgitte økt-ID-en er ikke blant de aktive øktene, så den finnes ikke eller er inaktiv. |
| 24 | UgyldigByttTilTargetUnntak | Ramme- eller vindusmålet som skal byttes til finnes ikke. |
| 25 | JavascriptUnntak | Det oppsto en feil under utførelse JavaSkript gitt av brukeren. |
| 26 | JsonException | Økten blir forespurt når økten ikke er opprettet. |
| 27 | NoSuchAttributeException | Attributtet til et element ble ikke funnet. |
| 28 | FlyttTargetUtenforGrenseneUnntak | Målet som er oppgitt for ActionChains move()-metoden er ikke gyldig – for eksempel utenfor dokumentet. |
| 29 | IngenSlikKontekstUnntak | ContextAware, som tester mobilenheter, finner ikke den forespurte konteksten. |
| 30 | IngenSlikInformasjonskapselUnntak | Ingen informasjonskapsel som samsvarer med det oppgitte stinavnet ble funnet blant informasjonskapslene i dokumentet som vises for øyeblikket. |
| 31 | Ikke funnetUnntak | En underklasse av WebDriverException, som genereres når et element på DOM-en ikke finnes. |
| 32 | EksternDriverServerUnntak | Serveren svarer ikke fordi de beskrevne funksjonene ikke er riktige. |
| 33 | SkjermbildeUnntak | Det er ikke mulig å fange en skjerm. |
| 34 | Unntak av økt ikke opprettet | Kunne ikke opprette en ny økt. |
| 35 | Kan ikke angi informasjonskapselunntak | En sjåfør kan ikke sette en informasjonskapsel. |
| 36 | UventetTagNameUnntak | En støtteklasse fikk ikke et webelement som forventet. |
| 37 | Uhåndtert varselunntak | Det er et varsel, men WebDriver kan ikke utføre varseloperasjonen. |
| 38 | Uventet varselTilstedeværendeunntak | Et uventet varsel dukker opp. |
| 39 | UkjentMetodeUnntak | Den forespurte kommandoen samsvarer med en kjent URL men ikke en metode for akkurat det URL. |
| 40 | Unnåelig nettleserunntak | Nettleseren kan ikke åpnes, eller den krasjet av en eller annen grunn. |
| 41 | Ustøttet kommandounntak | Den eksterne WebDriveren sender ikke gyldige kommandoer som forventet. |
Tre dominerer daglig feilsøking: NoSuchElementException betyr en feil XPath eller et element som ikke har blitt gjengitt, betyr TimeoutException en ventetid som er for kort for en AJAX svar, og StaleElementReferenceException følger en dynamisk gjengi på nytt.
Slik håndterer du unntak i Selenium
Her er standardkonstruksjonene for håndtering av unntak i Selenium WebDriver. Hver er enkel Java, så det fungerer i alle WebDriver-skript uten ekstra biblioteker.
Trinn 1) Prøv-fangst
Denne metoden kan fange opp unntak ved hjelp av en kombinasjon av nøkkelordene try og catch. try-kommandoen markerer starten på blokken, og catch plasseres på slutten av try-blokken, hvor den løser unntaket.
try { // Code } catch (Exception e) { // Code for Handling exception }
Trinn 2) Flere fangblokker
Det finnes ulike typer unntak, og én enkelt kodeblokk kan generere mer enn ett. Flere catch-blokker lar deg håndtere hver type separat med sin egen kode. Du kan bruke mer enn to catch-blokker, og det er ingen grense for hvor mange du legger til.
try { //Code } catch (ExceptionType1 e1) { //Code for Handling Exception 1 } catch (ExceptionType2 e2) { //Code for Handling Exception 2 }
Trinn 3) Kast
Når du vil generere et unntak, sender nøkkelordet throw det videre til håndtering under kjøretid. Bruk throw når du sender et unntak videre i stedet for å løse det i gjeldende metode.
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); } }
Trinn 4) Flere unntak
Du kan nevne diverse unntak i kastklausulen.
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 }
Trinn 5) Til slutt
Nøkkelordet finally oppretter en blokk under try-blokken. Det kjøres uavhengig av om et unntak har oppstått, noe som gjør det til det rette stedet å lukke en driver eller frigjøre en filhåndtak.
try { //Code } catch (ExceptionType1 e1) { //Catch block } catch (ExceptionType2 e2) { //Catch block } catch (ExceptionType3 e3) { //Catch block } finally { //The finally block always executes. }
Metoder for å vise unntaksinformasjon
Når et unntak oppdages, inneholder selve objektet diagnostiske detaljer. Du kan bruke følgende metoder for å vise det:
| Metode | Hva den rapporterer |
|---|---|
| printStackTrace() | Skriver ut stakken trace, navnet på unntaket og annen nyttig beskrivelse. |
| toString () | Returnerer en tekstmelding som beskriver navnet og beskrivelsen av unntaket. |
| getMessage () | Viser beskrivelsen av unntaket alene. |
Kombiner disse med et skjermbilde tatt inne i fangstblokken, og en mislykket kjøring viser både hva som gikk i stykker og hvordan siden så ut.
