Feil ankommer uventet og kan forstyrre den normale strømmen av utførelsen. Dette er noe som hver programmerer eller tester står overfor på et eller annet tidspunkt mens koding og testing. Det viktigste mottoet for testerne er å feilsøke feilen og løse den. I denne artikkelen vil vi forstå hvilke unntak som er i Selenium og hvordan du håndterer dem. Etter det vil vi se en oversikt over unntakets hierarki. Vi vil også snakke om hvilke unntakstyper og forskjellen mellom de sjekket og ukontrollerte unntakene, og den grunnleggende syntaks for håndtering.
Hva er unntakshåndtering?
Et unntak er en forekomst under en programmert utførelse som forhindrer instruksjonene fra å følge programmets vanlige flyt. For å si det andre veien, er alt som får testsaken til å stoppe mens den kjører, kjent som et unntak. Når man skjer, stopper applikasjonen og et unntaksobjekt produseres. Etter at et unntak er reist, søker programmet etter noen å håndtere det. Mye feilsøkingsinformasjon er gitt av unntaksobjektet inkludert metodehierarkiet, linjenummeret der unntaket oppstod, unntakstypen og mer. Som et resultat vil du se de forskjellige feilene mens du jobber med Selenium WebDriver, avhengig av koden du skriver. Noen ganger fungerer den samme koden godt, mens andre ikke gjør det. Når du kjører skriptene dine, kan du møte noen få forskjellige unntak. Derfor, hver gang du oppretter et skript, prøver du å gi den høyeste kvaliteten på koden, så hvis et første problem oppstår, oppretter og kaster det et unntak og til slutt håndterer det.
Unntak hierarki
Eksepsjonelle omstendigheter bør fanges av brukerapplikasjonen ved hjelp av denne klassen. En annen gren, for eksempel feil, brukes av de andre Java -runtime -systemene for å indikere feilene som er assosiert med den. I utgangspunktet, under unntak, er det to typer unntak: den ene er sjekket og den andre er ikke merket for. La oss se forskjellen mellom disse to unntakene: sjekket og ukontrollerte unntak.
Et sjekket unntak betyr at det er et unntak som er. Det ukontrollerte unntaket oppstår under utførelse, selv om kompilatoren bekreftet det under samlingen. De sjekket unntakene blir i hovedsak referert til som unntak av kompileringstid, mens de ikke-sjekket unntakene kalles unntak av runtime. For å forstå det sjekket unntaket, bør programmereren håndtere dette unntaket for å opprettholde den normale utførelsesstrømmen. Mens unntakene fra runtime kan ignoreres og det ikke vil være stor forskjell i strømmen av utførelsen av programmet. Dette er hovedforskjellen mellom de sjekket og ukontrollerte unntakene.
klasse unntak
public static void main (String args [])
prøv
fangst (unntak e)
Slik ser strukturen til unntaket ut. Du oppretter en klasse og skriver en prøveblokk i hovedmetoden der du skriver en kode som kan heve et unntak. Inne i fangstblokken skriver du koden som må utføre dette. Koden reiser et unntak som er inkludert i prøveblokken. Så koden kaster et unntak i prøveblokken. For å fortsette med den normale utførelsesstrømmen, håndteres den i fangstblokken.
Unntakstyper i selen
Det er forskjellige typer unntak som er nevnt i det følgende:
WebDriVereException
Hvis du har kromdriveren installert, men du prøver å utføre en aktivitet, oppstår en feil når du prøver å gjøre det. Dette unntaket blir reist på en Mozilla Firefox -sjåfør som er en Geeko Driver.
NosuchElementException
Dette unntaket blir kastet når nettdriveren ikke finner elementet i trommelstrukturen. Det vil si at hvis du ikke er i stand til å finne et bestemt element, sier det ikke noe slikt element unntak. Det vil si at hvis det elementet ikke er til stede, er det grunnen til at det ikke kaster noe slikt element unntak.
prøve
sjåfør.få (“https: // abc.com/iframe ”);
sjåfør.FindElement (av.id (“timcd”)).Sendkeys (.. .KeyStosend: "Hei");
fangst (notfoundException e)
system.ute.printin (“ikke funnet”);
e.printStackTrace ();
;
Vi så et "ikke funnet" unntak i denne koden. Først må du gå til nettadressen. Bytt deretter til rammen og skriver deretter noe. Hvis du ikke bytter og skriver direkte inn i et element, viser det "ikke funnet" -feilen i fangstelementet.
NosuchframeException
Hvis du vil utføre en handling som bytter mellom rammene og du ikke kan gjøre det fordi barnrammen ikke er til stede eller overordnet ramme ikke er i stand til å navigere.
NoalertPresentException
Denne feilen vises når vi prøver å utføre en funksjon som enten er akseptert eller avvist og ikke er nødvendig på stedet som er nødvendig.
Tilsvarende har vi et JavaScript -varsel. Hvis vi ikke klikker på JavaScript -varselet, vil det ikke være noe varsel i dette tilfellet. Hvis vi prøver å bytte det varselet, gir det deg en NoalertPresentException.
TimeoutException
Dette unntaket kastes når en kommando ikke fullfører oppgaven på en gitt tid.
Her er metodene for å håndtere et unntak med syntaks:
Prøv: den brukes til å spesifisere en blokk der vi plasserer unntakskoden.
Prøv
// kode er skrevet her
fangst (exception_class_name)
Fangst: Denne blokken brukes til å håndtere unntaket.
prøv
Catch (ExceptionName E1)
/// Fang blokkeringskode
Kast: Dette brukes til å kaste et unntak.
fangst (unntak e)
System.ute.Println (“Element er ikke til stede.”);
kast (e);
Kaster: Det brukes til å erklære hva unntaket er.
public static void main (String [] args)
kaster avbruttException
Endelig: den brukes til å utføre den avgjørende koden til programmet.
prøve
//// Kritisk kode her
Fangst (unntak E1)
[/// Fangs blokkeringskode
endelig
///// Denne kodeblokken må utføres
Metoder for å håndtere et unntak med koder
Først oppretter vi en eksepsjonell klasse.
Offentlig klasse Eksepsjonshåndtering av eksempler
Vi lanserer først Chrome -driveren for å starte Google og navigere gjennom et bestemt gitt nettsted. Deretter bruker vi tråden Dot Sleep for å sove for 3000 som er tre millisekunder. Deretter finner vi et element ved navn som er "falskt.Klikk ”. Nå er dette elementet ikke til stede, så det det gjør er å kaste et unntak som kalles unntak "ingen slikt element". Etter å ha kjørt koden, vil vi se kromdriveren lansert.
WebDriver MyDriver = new ChromedRriver ();
MyDriver.få (https: // www.Google.com);
Tråd.Sleep (3000);
MyDriver.FindElement (av.Navn (“Fake”)).klikk;
Ingenting skjedde fordi unntaket blir reist her. Som vi kan se, kaster det et unntak som sier "ikke noe element".
Nå, for å håndtere det, bruker vi prøve- og fangstblokken. I Try -blokken, bruk følgende kommando:
fangst (nosuchElementException e)
System.ute.Println (“Element er ikke til stede.”);
System.ute.Println (“Hei”);
System.ute.Println (“Hei”);
Vi skriver koden som kaster et unntak. Denne koden kaster allerede et unntak om at ingen slikt element er funnet. I prøveblokken skriver vi unntaket "ingen slikt element". Inne i det trykker vi “Elementet er ikke funnet” og “Hei”. Igjen, utenfor forsøksblokken, vil vi sjekke om den normale strømmen av utførelse blir ført eller ikke. Det er grunnen til at vi skriver ut denne uttalelsen utenfor blokken. Etter å ha kjørt koden, kaster den ikke unntaket. Det skriver ut “Hallo” to ganger: Første gang er inne i fangstblokken og andre gang er utenfor prøve- og fangstblokken. For å sikre at den normale strømmen av utførelsen ikke blir avbrutt, er det slik vi kan håndtere unntakene:
I dette eksemplet ser vi forventet tilstandssvikt og hvordan vi skal håndtere det.
Listeli;
@Overstyring
offentligvoid performas (t skuespiller)
Li = Browsetheweb.som (skuespiller).Finadall (av.xpath (“// div [@class = 'nav-fil'] // a [@data-csa-c-typen = 'link']"));
for (int i = 0; i
System.ute.Println (“-WebElementFacade-liste over meninenavn ####” +Li.Få (i).getText ());
Etter å ha utført denne koden, får vi resultatet der den skriver ut alle verdiene, men testen mislykkes i utgangsvinduet.
Nå fikser vi denne feilen. Hvis vi sløyfe mer enn en verdi før vi skriver ut verdien, må vi sjekke om elementet vises eller ikke eller at verdien vises eller ikke. Deretter kan vi skrive ut den verdien. I så fall skriver vi om “li. få.er "tilstand vises. Dette for å sjekke tilstanden. Deretter skriver vi utskriftserklæringen. Etter å ha kjørt koden, leser den alle verdiene. Som et resultat får vi testen bestått. Den leser alle verdiene, og som et resultat består vi testen.
Konklusjon
Vi forstår de forventede forholdene i selen. Vi diskuterte også alle sjekket og ukontrollerte unntak midt i artikkelen. Vi diskuterte hvilke unntakstyper med eksempler. Til slutt dekket vi hvordan vi skal håndtere unntakene med koder. Denne artikkelen inneholder alle detaljene om håndtering av selen og forventede omstendigheter.