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 WebDriverI 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;Vi gir den komplette koden i det følgende:
pakke ui;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 ");Etter det maksimerer vi nettleservinduet og åpner det gitte nettstedet ved å bruke følgende gitt syntaks:
sjåfør.få til().vindu().maksimere ();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øvFor å 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")));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øvHvis 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".