Skjemaer er de grunnleggende webelementene for å motta informasjon fra besøkende på nettstedet. Webskjemaer har forskjellige GUI-elementer som tekstbokser, passordfelt, avkrysningsruter, radioknapper, rullegardin, filinngang, etc.
Vi vil se hvordan du får tilgang til disse forskjellige formelementene ved hjelp av Selenium Driver med Java. Selen innkapsler hvert skjemaelement som et objekt for WebElement. Det gir API for å finne elementene og iverksette tiltak på dem som å skrive inn tekst i tekstbokser, klikke på knappene osv. Vi vil se metodene som er tilgjengelige for å få tilgang til hvert skjemaelement.
I denne opplæringen vil vi se hvordan du identifiserer følgende skjemaelementer
- Introduksjon til WebElement, findElement (), findElements ()
- Inndataboks
- Angi verdier i inndatabokser
- Slette verdier i inndatabokser
- Knapper
- Send inn knapper
- Komplett kode
- Feilsøking
Introduksjon til WebElement, findElement (), findElements ()
Selenium Driver driver innkapsler et enkelt skjemaelement som et objekt for WebElement.
Det er forskjellige teknikker som WebDriver identifiserer skjemaelementene basert på de forskjellige egenskapene til webelementene som ID, Navn, Klasse, XPath, Tagname, CSS-velgere, lenketekst, etc.
Web Driver gir følgende to WebElement-metoder for å finne elementene.
- findElement () - finner et enkelt webelement og returnerer som et WebElement Selen-objekt.
- findElements () - returnerer en liste over WebElement-objekter som samsvarer med søkekriteriene.
La oss se kodebitene for å få et enkelt element - Tekstfelt på en webside som et objekt for WebElement ved hjelp av findElement () -metoden. Vi skal dekke findElements () -metoden for å finne flere elementer i påfølgende opplæringsprogrammer.
Trinn 1: Vi må importere denne pakken for å lage objekter av Web Elements
Trinn 2: Vi må ringe findElement () -metoden som er tilgjengelig i WebDriver-klassen og få et objekt fra WebElement.
Se nedenfor for å se hvordan det gjøres.
Inndataboks
Inndatabokser refererer til en av disse to typene:
- Tekstfelt - Selen-inntastingsbokser som godtar typede verdier og viser dem som de er.
- Passordfelt - tekstbokser som godtar typede verdier, men maskerer dem som en serie spesialtegn (ofte prikker og stjerner) for å unngå at sensitive verdier vises.
Locators
Metoden findElement () tar en parameter som er en lokalisator for elementet. Ulike lokaliseringer som By.id (), By.name (), By.xpath (), By.CSSSelector () osv. Finn elementene på siden ved hjelp av egenskapene som ID, navn eller sti, etc.
Du kan bruke plugins som Fire path for å få hjelp til å få id, xpath, etc. av elementene.
Ved å bruke eksempelsiden http://demo.guru99.com/test/login.html gitt nedenfor er koden for å finne tekstfeltet "E-postadresse" ved hjelp av id-lokalisereren og "Passord" -feltet ved hjelp av navnelokatoren.
- E-post tekstfelt er lokalisert etter ID
- Passordfeltet ligger etter navn
sendkeys i Selen
sendkeys () i Selenium er en metode som brukes til å legge inn redigerbart innhold i tekst- og passordfeltene under testutførelsen. Disse feltene identifiseres ved hjelp av lokatorer som navn, klasse, id osv. Det er en metode som er tilgjengelig på nettelementet. I motsetning til typemetoden erstatter ikke sendkeys () -metoden eksisterende tekst i noen tekstboks.
Angi verdier i inndatabokser
For å legge inn tekst i tekstfeltene og passordfeltene, er sendKeys () metoden som er tilgjengelig på WebElement i Selen.
Ved å bruke det samme eksemplet på http://demo.guru99.com/test/login.html-nettstedet, finner vi her tekstfeltet og passordfeltene og skriver inn tekst i selen.
- Finn tekstfeltet "E-postadresse" ved hjelp av ID-søkeren.
- Finn "Passord" -feltet ved hjelp av navnelokatoren
- Skriv inn tekst i "E-postadresse" ved hjelp av Selenium sendkeys-metoden.
- Skriv inn et passord i "Passord" -feltet ved hjelp av sendKeys () -metoden.
Slette verdier i inndatabokser
Den klare () metoden brukes til å slette teksten i en tekstboks. Denne metoden trenger ikke en parameter . Kodebiten nedenfor fjerner teksten fra feltene E-post eller Passord
Knapper
Du får tilgang til Selenium-klikk-knappen ved å klikke () -metoden.
I eksemplet ovenfor
- Finn knappen for å logge på
- Klikk på "Logg på" -knappen på innloggingssiden til nettstedet for å logge inn på nettstedet.
Send inn knapper
Send-knapper brukes til å sende hele skjemaet til serveren. Vi kan enten bruke click () -metoden på webelementet som en vanlig knapp som vi har gjort ovenfor, eller bruke metoden submit () på et hvilket som helst webelement i skjemaet eller på selve sendeknappen.
Når send () brukes, vil WebDriver slå opp DOM for å vite hvilken form elementet tilhører, og deretter utløse sin innsendingsfunksjon.
Komplett kode
Her er den komplette arbeidskoden
importer org.openqa.selenium.By;importer org.openqa.selenium.WebDriver;importer org.openqa.selenium.chrome.ChromeDriver;importer org.openqa.selenium. *;offentlig klasseskjema {public static void main (String [] args) {// erklæring og instantiering av objekter / variablerSystem.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver driver = ny ChromeDriver ();Streng baseUrl = "http://demo.guru99.com/test/login.html";driver.get (baseUrl);// Få WebElement som tilsvarer e-postadressen (TextField)WebElement e-post = driver.findElement (By.id ("e-post"));// Få WebElement som tilsvarer passordfeltetWebElement passord = driver.findElement (By.name ("passwd"));email.sendKeys (" Denne e-postadressen er beskyttet mot programmer som samler e-postadresser. Du må aktivere JavaScript for å kunne se den.");password.sendKeys ("abcdefghlkjl");System.out.println ("Tekstfelt sett");// Slette verdier i tekstboksenemail.clear ();password.clear ();System.out.println ("Tekstfelt ryddet");// Finn send-knappenWebElement-pålogging = driver.findElement (By.id ("SubmitLogin"));// Bruke klikkmetoden for å sende inn skjemaemail.sendKeys (" Denne e-postadressen er beskyttet mot programmer som samler e-postadresser. Du må aktivere JavaScript for å kunne se den."); password.sendKeys ("abcdefghlkjl"); login.click (); System.out.println ("Pålogging gjort med klikk"); // bruker innsendemetoden for å sende inn skjemaet. Send inn brukt på passordfeltdriver.get (baseUrl); driver.findElement (By.id ("email")). sendKeys (" Denne e-postadressen er beskyttet mot programmer som samler e-postadresser. Du må aktivere JavaScript for å kunne se den."); driver.findElement (By.name ("passwd")). sendKeys ("abcdefghlkjl"); driver.findElement (By.id ("SubmitLogin")). send (); System.out.println ("Pålogging utført med innlevering"); //driver.close (); }}
Feilsøking
Hvis du støter på NoSuchElementException () mens du finner elementer, betyr det at elementet ikke finnes på siden på det tidspunktet webdriveren åpnet siden.
- Sjekk locatoren din igjen ved hjelp av Firepath eller Inspect Element i Chrome.
- Sjekk om verdien du brukte i koden, er forskjellig fra verdien for elementet i Firepath nå.
- Noen egenskaper er dynamiske for få elementer. I tilfelle du finner ut at verdien er forskjellig og endrer seg dynamisk, bør du vurdere å bruke By.xpath () eller By.cssSelector () som er mer pålitelige, men komplekse måter.
- Noen ganger kan det også være et venteproblem, dvs. at webdriveren utførte koden din allerede før siden ble lastet helt inn osv.
- Legg til en ventetid før findElement () ved hjelp av implisitte eller eksplisitte venter.
Sammendrag
- Tabellen nedenfor oppsummerer kommandoene for å få tilgang til hver type element diskutert ovenfor
Element | Kommando | Beskrivelse |
---|---|---|
Inndataboks | sendKeys () | brukes til å legge inn verdier i tekstbokser |
klar() | brukes til å fjerne tekstbokser med gjeldende verdi | |
Lenker | klikk () | brukes til å klikke på lenken og vente på at siden er fullført før du går videre til neste kommando. |
Send inn-knapp | sende inn() |
- WebDriver tillater valg av mer enn ett alternativ i et flere SELECT-element.
- Du kan bruke send () -metoden på hvilket som helst element i skjemaet. WebDriver vil automatisk utløse innsendingsfunksjonen til skjemaet der elementet tilhører.