Eksplisitt venter i selen

Eksplisitt venter i selen
Selenium tilbyr venter på å løse synkroniseringsproblemene. I denne artikkelen vil vi diskutere den eksplisitte ventemetoden. Den eksplisitte metoden holder utførelsen av neste trinn til den finner elementet i en gitt spesifikk tid. I dette innholdet vil vi ha en oversikt over selen venter og forstå fordelene med eksplisitt ventetid. Denne artikkelen implementerer et grunnleggende eksempel på eksplisitte venter og bruker prøv-og-fangstblokker for å fange unntaket.

Hva er ventetiden i Selenium Framework?

Selen venter hjelp til å løse synkroniseringsproblemene. Synkroniseringen er prosessen med å samsvare med "Testautomatiseringsverktøyets hastighet" med hastigheten på "nettsted under test". I denne prosessen utfører webdriveren en viss oppgave på nettsiden, men webelementet er ikke lastet på "nettsted under test". I denne situasjonen kaster webdriveren en "nosuchElementExpection" eller "elementnotvisiblexpection" unntak. Det er tre typer Waits -metode som er levert av Selenium Framework.

Implisitt ventetid

Denne typen ventetid gjelder alle nettstedselementer, det er derfor det kalles en global ventetid. Den implisittwait () metoden brukes til å kalle den.

Eksplisitt ventetid

Det er en webelementspesifikk ventype. Det venter på en viss tid med å laste det spesifikke elementet før du kaster et unntak.

Flytende vent

Det gir maksimal tid å finne webelementet.

Hva er en eksplisitt ventetid i selen?

Den eksplisitte ventetypen er forskjellig fra den implisitte ventetiden. Denne ventemetoden holder en viss tid til en spesifikk tilstand oppstår før du fortsetter til neste kodelinje. Det er nyttig der noen elementer lastes raskere og noen elementer lastes saktere. For eksempel: Det er to eller tre elementer som tar 20 til 30 sekunder å laste på websiden. Her kan du ikke gå og endre ventetiden i henhold til den maksimale tiden som er tatt av en av webelementet. Det er der den eksplisitte ventetiden spiller sin rolle. Eksplisitt vent Angir ventetiden på det aktuelle elementet på websiden. Du kan spesifisere å vente på et bestemt element i lang tid; Det er der vi bruker eksplisitt ventetid. WebDriverWait -metoden brukes til å kalle explicit Wait.

Selenium WebBrowser -grensesnitt

WebDriver -grensesnittet muliggjør implementering av automatiseringstest. Webdriver brukes til å kontrollere og lage samhandling mellom nettsted og selenautomatiseringsverktøy som å finne elementene, navigere i nettadressene, få attributtegenskaper, bekrefter om teksten er der i webelementet, søker etter et element og mer.

Du kan bruke en rekke nettlesere inkludert Firefox, Safari og Chrome. Hver type nettleser har en spesifikk klasse for den typen nettleser som FirefoxDriver, Chromedriver, InternetExplorerdriver osv. Alle nettlesere kan implementeres gjennom WebDriver -metoden.

Her er syntaks for bruk av WebDriver -grensesnittet:

Fra Selenium Import WebDriver
driver = webdriver.Krom ()
sjåfør.få ('https: // www.eBay.com ')

I den medfølgende koden oppretter vi "driver" -objektet til webdriveren. Her bruker vi Chrome -nettleseren med metoden.Chrome () klasse. Etter det lanseres og åpner nettleseren den gitte url.

Eksempel 1:

I dette første programmet implementeres et veldig grunnleggende eksplisitt ventetid som er veldig nyttig for nybegynnere og erfarne utviklere.

Det er scenarier der vi først finner "Daily Deals" WebElement og navigerer til siden Daily Deals. Hvis tilstanden er sann, skriv ut "tilstanden sann". Ellers skriver du ut "tilstanden falsk" unntak.

Først importerer vi alle nødvendige biblioteker med selen og webbrowser. For å bruke den eksplisitte ventetiden, importer følgende biblioteker:

Import org.Openqa.Selen.Brukerstøtte.ui.Forventet betingelser;
Import org.Openqa.Selen.Brukerstøtte.ui.WebDriverWait;

Vi gir den komplette koden i det følgende:

pakke ui;
Importer Java.util.samtidig.TimeUnit;
Import org.Openqa.Selen.Av;
Import org.Openqa.Selen.Webelement;
Import org.Openqa.Selen.krom.Chromedriver;
Import org.Openqa.Selen.Brukerstøtte.ui.Forventet betingelser;
Import org.Openqa.Selen.Brukerstøtte.ui.WebDriverWait;
offentlig klasse eksplisitt_wait
public static void main (String [] args)
System.SetProperty ("Webdriver.krom.Driver "," C: \\ nettleserdrivere \\ Chromedriver.exe ");
Chromedriver Driver = new Chromedriver ();
sjåfør.få til().vindu().maksimere ();
sjåfør.få ("https: // www.eBay.com/");
WebDriverWait Wait = New WebDriverWait (driver, varighet.av sekunder (10));
prøv
WebElement Element = Vent.Inntil (forventet betingelser.SynlighetsofelementLocated (av.LinkText ("Daily Deals")));
element.klikk ();
System.ute.println ("tilstand sann");

Fangst (unntak E)

System.ute.println (e);
System.ute.println ("tilstand falsk");

sjåfør.slutte();

La oss nå forstå den forrige koden trinn for trinn og forklare hvilke handlinger hver linje utfører.

I den første delen av kode får vi nettleserbibliotekene fra maskinen og starter deretter Chrome Browser -driverne.

I dette eksemplet bruker vi Chrome -nettleseren. Følgende syntaks brukes til å implementere den:

System.SetProperty ("Webdriver.krom.Driver "," C: \\ nettleserdrivere \\ Chromedriver.exe ");
Chromedriver Driver = new Chromedriver ();

Etter det maksimerer vi nettleservinduet og åpner det gitte nettstedet ved å bruke følgende gitt syntaks:

sjåfør.få til().vindu().maksimere ();
sjåfør.få ("https: // www.eBay.com/");

For dette eksemplet bruker vi eBay -nettstedet som ligger på https: // www.eBay.com/.

Hvis vi ønsker å bekrefte om den "daglige avtalen" hyperlinjen eksisterer eller ikke, bør vi vite hvor den "daglige avtalen" er til stede på nettstedet. For å finne LinkText Locator for "Daily Deals" -hyperlinjen, må vi inspisere "Daily Deals" som er spesielt på websiden og finne taggen Innertext. Skjermbildet er vedlagt i følgende for å se hvor vi kan finne "Daily Deals" -koden.

I forrige skjermbilde ser vi at taggen for "Daily Deals" er til stede på websiden. Hvis det ikke er noen nåværende tag, er det ingen tilstedeværende "daglige tilbud" hyperlinje. Vi må bruke dette følgende hint:

sjåfør.FindElement (av.Locatortype (“locatorValue”));

Vi bruker sjåføren.FindElements () -metode for å sjekke om et element er til stede på en webside eller ikke. "By" -objektet er en parameter for kommandoen Find Element som leverer et objekt av webelementtypen. De forskjellige lokalisatorteknikkene som navn, id, klassenavn, xpath, etc. Koblingstekst kan brukes med "av" -objektet. Som vi er klar over, returneres en liste over webelements som er lokalisert ved hjelp av "By Locator" -parameteren av FindElements () -funksjonen. Hvis elementet blir funnet, returneres en liste over ikke-null webelements. Ellers returneres en liste over størrelse 0. Som et resultat kan lengden på listen brukes til å avgjøre om en oppføring er til stede eller ikke.

For dette eksemplet bruker vi LinkText Locator som vist i følgende syntaks:

sjåfør.FindElement (av.LinkText ("Daily Deals")).klikk ();

I forrige kodebiter, finn "daglige tilbud" hyperlinjetekst først. Etter det, bruk klikk () -funksjonen for å navigere til en annen side.

Etter det implementeres den eksplisitte ventetiden i følgende gitt syntaks:

WebDriverWait Wait = New WebDriverWait (driver, varighet.av sekunder (10));

Når vi bruker den forrige delen av kode for eksplisitt ventetid, må du huske at funksjonen venter i 10 sekunder som definert i WebDriverWait -metoden til den gitte lokaliseringen er funnet.

WebDriverWait -metoden brukes til å implementere eksplisitt. Lag "Vent" referanseobjektet i WebDriverWait -klassen. Tildel deretter minnet med den nye WebDriverWait og pass to parameter (1) Web Driver's Reference -objekt og nevnt (2) Tidsvarighet (driver, varighet.av sekunder (10))).

Bruk nå referanseobjektet til WebDriverWait -klassen som er "vent" for å ringe til () -metoden og passere den forventede synligheten av eleementlocated (av.id) tilstand. Hvis den forventede tilstanden er sann, returner du webelementet og vent i 10 sekunder til denne tilstanden går i oppfyllelse. Denne forventede tilstanden er webelementspesifikasjonen. Her må vi vente på "elementet" synlighet. Hvis elementet er synlig i løpet av 5 sekunder, må du vente på utganger. Hvis ikke, maksimerer det ventetiden i 10 sekunder.

Her er den gitte syntaks for forventet tilstand:

Vente.Inntil (forventet betingelser.SynlighetsofelementLocated (av.id (“element”)));

Det er mange forventede forhold som er gitt av Selenium som AlertisPresent (), ElementSelectionStateTobe (), ElementTobeClickable (), etc. Her i denne opplæringen bruker vi "VisiblityOfElementLocated ()" -tilstanden.

La oss flytte til neste del av koden der vi har "tilstanden":

prøv
WebElement Element = Vent.Inntil (forventet betingelser.SynlighetsofelementLocated (av.LinkText ("Daily Deals")));
element.klikk ();
System.ute.println ("tilstand sann");

Fangst (unntak E)

System.ute.println (e);
System.ute.println ("tilstand falsk");

For å sjekke om elementet eksisterer eller ikke, bruker vi et forsøk og fangstblokk. Alt vi trenger å gjøre er å prøve å finne elementet og samhandle med det.

WebElement Element = Vent.Inntil (forventet betingelser.SynlighetsofelementLocated (av.LinkText ("Daily Deals")));
element.klikk ();
System.ute.println ("tilstand sann");

Vent på elementet med "Daily Deals" LinkText. Hvis vi finner webelementet, klikker du på det elementet for å navigere til en annen side og skrive ut "tilstanden sant" i konsollen.

Her i følgende skjermbilde kan vi se at elementfunnet er vellykket. Naviger siden:

La oss flytte til neste del av koden der vi har "tilstanden falsk":

prøv
WebElement Element = Vent.Inntil (forventet betingelser.SynlighetsofelementLocated (av.LinkText ("Feil element")));
element.klikk ();
System.ute.println ("tilstand sann");

Fangst (unntak E)

System.ute.println (e);
System.ute.println ("tilstand falsk");

Hvis det "gale elementet" hyperlinjetekst ikke er til stede på websiden, kaster du unntaket og skriv ut "tilstanden falsk" utgang i konsollen.

I det følgende skjermbildet kan vi se at elementet er funnet mislykket:

Til slutt, etter å ha utført all koden, lukker du nettleseren ved hjelp av Quit () -metoden.

sjåfør.slutte();

Konklusjon

Du har nå lært om selen eksplisitte ventefordeler. Du lærer hvordan du implementerer det i et ekte scenario. Denne artikkelen implementerer eksemplet der du holder utførelsen av ytterligere kode til du finner elementet på en gitt ventetid. Denne artikkelen inneholder forsøks- og fangstforholdene. Hvis elementet går ut av, skriv ut "tilstanden". Ellers skriver du ut "tilstanden falsk".