Hvordan sjekke om et element eksisterer i selen

Hvordan sjekke om et element eksisterer i selen

Dette innlegget undersøker hvordan du bruker Selenium WebDriver for å avgjøre om et element eksisterer eller ikke. Ved å bruke noen enkle og enkle eksempler gjennom koding, demonstrerer vi hvordan vi kan sjekke eksistensen av elementer i Selenium WebDriver. For det første forklarer vi hva viktige webelementer er i selen og hvordan du kan finne elementene i selen ved hjelp av forskjellige eksempler. La oss først diskutere hva Selenium WebDrivers og Webelements er.

Selen webdriver og selen webelements

Selenium webdriver gjorde programmerernes liv enklere med sine nyttige funksjoner. Selenium webdriver refererer til språkbindingene og de mange implementeringene av nettleserkontrolleringskode. Et HTML -element kalles en webelement som gjør det mulig for brukerne å kontrollere de automatiserte testene. Gjennom webelements tilbyr Selenium WebDriver godt organiserte interaksjoner på websiden som å finne elementene, få attributtegenskapene, bekrefter teksten i webelementet og mer. Vi kan automatisere et bredt utvalg av testmiljøer med veiledning av selen.

Kommando for å finne et element i selen

"By" -objektet er en parameter for kommandoen Find Element som leverer et objekt av webelementtypen. Ulike lokalatorsteknikker som navn, id, klassenavn, xpath, koblingstekst osv. kan brukes med "av" -objektet.

Her er syntaks for å finne et element:

WebElement ElementName = Driver.FindElement (av.LocatorStrategy (“LocatorValue”));

Enhver av følgende verdier inkludert navn, ID, klassenavn, tagnavn, koblingstekst, delvis koblingstest og XPath, kan brukes til lokaliseringsstrategi.

Noen av disse verdiene kan legges inn i lokaliseringen for å lokalisere nettelementet.

Hvordan verifisere om et element eksisterer i selen

Flere måter kan vedtas for å sjekke om et bestemt element er i selen -webdriveren eller ikke. Her er et sammendrag av de mest typiske måtene å finne ut om elementene eksisterer i webdriveren eller ikke.

ElementInElement (…) Det andre getElementsByClassName (...)
ElementInElement inneholder (ElementName, ElementValue) (navn, verdi).

Resultatet er boolsk. Hvis elementet er til stede, produserer det en boolverdi av sann. Ellers svarer det usant. Å gi et nullnavn gir også et sant resultat, mens det gir en streng gir et falskt resultat.

Nå, for å forstå denne prosedyren, vil vi gå til vårt grensesnitt og utføre noen eksempler på koder.

Eksempel 1:

Dette første eksemplet er veldig grunnleggende og enkelt som er opprettet for nybegynnere og erfarne nivåutviklere. Programmet starter med å importere sjåføren.finn å få webelementene med tagnavnet for å sjekke eksistensen av webelementene i det. Vi gir følgende komplette kommando som du kan referere til. Etter det forklarer vi denne koden i biter slik at du kan forstå hvilke handlinger de utfører.

Import org.Openqa.Selen.Av;
Import org.Openqa.Selen.Webdriver;
Import org.Openqa.Selen.Webelement;
Import org.Openqa.Selen.krom.Chromedriver;
offentlige klasse Checkifexists
public static void main (String [] args)

System.SetProperty (“Webdriver.krom.driver ”,“./drivere/kromdriver.exe ”);
WebDriver Driver1 = New Chromedriver ();
Driver1.få (“http: // demoqa.com/registrering/”); Driver1.få til().Timeouts ().Implisittwait (2000, TimeUnit.Milisekunder);
Liste DD = Driver1.Findelements (av.tagname ("velg"));
if (dd.størrelse ())> 0) system.ute.Println (“rullegardinmenyen eksisterer”);
annet


System.ute.println ('ingen rullegardin ");-

La oss nå prøve å forstå forrige kode.

Hvis vi vil bekrefte om rullegardinmenyene eksisterer eller ikke, bør vi vite hvor rullegardinmenyene er til stede i nedstrukturen. Hvis du inspiserer en rullegardin på et bestemt nettsted, er rullegardinmenyene under de utvalgte taggene. Skjermbildet er vedlagt for å se hvor vi kan finne den valgte fanen og rullegardinmenyen.

Hvis det er noen utvalgte tagger som er til stede på den aktuelle websiden, er rullegardinmenyene på siden. Hvis det ikke er noen tilstedeværende valgtag, er det ingen tilstedeværende eller eksisterende rullegardinler. Så vi må bruke dette hintet:

Liste DD = driver.Findelements (av.tagname (“velg”));

Vi bruker sjåføren.FindElements () -metode for å bestemme om et element er til stede på en webside. Som vi er klar over, er en liste over webelements lokalisert ved hjelp av "By Locator" -parameteren som returneres 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.

Husk at når du søker etter elementet, venter denne funksjonen til den "implisitte" ventetiden er gitt for sjåføren som vi gir i kodingen vår:

Driver1.få til().Timeouts ().Implisittwait (2000, TimeUnit.Milisekunder);

Hvis vi vet at et element umiddelbart er tilgjengelig på websiden, kan vi endre den "implisitte" ventes verdi tilbake til standardverdien etter å ha satt den til 0, sjekket for tilstedeværelsen av elementer og fremskynder prosessen.

Hvis du bare legger "velger", vil du ikke kunne få noen utdata. Det går bare til den utvalgte taggen og peker på det.

Det er alt. Hvis du vil bekrefte om rullegardinmenyen eksisterer eller ikke, bør du lagre denne utdata den i variabelen "List WebElement".

Etter å ha utført koden, får vi resultatet at det eksisterer en "rullegardin.

Eksempel 2:

I forrige eksempel brukte vi metoden for å finne et element etter tagname for å se om et rullegardinelement eksisterer eller ikke. Nå, fra dette eksemplet og utover, vil du vite hvordan du finner elementene ved å bruke Try and Catch Methods.

La oss utføre koden og sjekke hvordan du bruker den:

System.SetProperty (“Webdriver.Gecko.driver ”,“/brukere/ABC/Desktop/C/DZ/Library/XYZ ”);
WebDriver Driver1 = New FirefoxDriver ();
Driver1.få (https: // www.Google.com)
prøve
Driver1.FindElement (av.xpath (“// input [@id = 'djahvljadhlkgj')))
System.ute.Printin (element eksisterer);

fangst (nosuchElementException e) system.ute.printin (“element ikke eksisterer);

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

sjåfør.FindElement (av.xpath (“// input [@id = 'djahvljadhlkgj']"));

Nå finner den forrige kodebiten elementet ved å bruke XPath:

fangst (nosuchElementException e) system.ute.printin (“element ikke eksisterer);

Hvis elementet ikke finnes i fangstblokken, betyr det at det ikke er noe element på siden med denne typen lokaliserer i denne XPath. Deretter blir feilen fanget slik at vi kan fange unntaket.

Etter å ha kjørt koden, kaster den feilen "Ingen slike elementer". Dette er hva vi ønsker å komme oss i fangstblokken:

prøve
Drive1r.FindElement (av.xpath (“// input [@id = 'djahvljadhlkgj')))
System.ute.Printin (element eksisterer);

fangst (nosuchElementException e) system.ute.printin (“element ikke eksisterer);

Det vi gjorde er at vi tok en prøveblokk. I den forsøksblokken finner vi ut elementet som vi ønsker å finne ved hjelp av hvilken lokalisering vi vil bruke. Hvis elementet blir funnet, utføres det ganske enkelt og uttalelsen sier at elementet eksisterer, og det går aldri til fangstblokken. Hvis elementet ikke er funnet, kaster det ikke noe slikt element. Deretter utfører det ganske enkelt det "elementet som ikke er funnet" i fangstblokken.

Eksempel 3:

I dette tilfellet bruker vi sjåføren.Finn elementer etter ID. Deretter får vi tellingen av det aktuelle elementet. Hvis det ikke er null, betyr det at elementet er til stede. Prøv alltid funnelementene, ikke funnelementet. Forskjellen mellom de to er at hvis du bruker FIND -elementet, kaster det unntaket "Ingen slike elementer". Men funnelementene kaster ikke dette unntaket selv om elementet er til stede eller ikke. Bare husk å bruke denne Find Elements -metoden og sjekk tellingen på den verdien eller den listen over det elementet. Hvis tellingen er 0, betyr det at elementet ikke er til stede.

if (driver1.Findelements (av.Id (“ABC”)).Telle!= 0)
konsoll.WritLine (“Element er til stede”);
ellers
konsoll.WritLine (“Element er ikke til stede”);

I denne koden mottar vi antallet 0, noe som betyr at elementet ikke er til stede.

Konklusjon

Vi diskuterte om bruk av koding for å avgjøre om elementene i selen webdriver eksisterer eller ikke. Ideen om parameteren for å finne elementkommandoen som returnerer et objekt av webelementtypen vises her fra eksemplene. I denne artikkelen forstår vi konseptet om hvordan du finner eksistensen av webelementer i Selenium WebDrivers ved å bruke forskjellige metoder. Du kan henvise til denne artikkelen fra start til slutt for å bedre forstå hele konseptet.