WebElement i Selenium
WebElement i Selenium
Skjemaer er de grunnleggende webelementene for å motta informasjon fra besøkende på nettstedet. Nettskjemaer har forskjellige GUI-elementer som tekstbokser, passordfelter, avmerkingsbokser, radioknapper, rullegardiner, filinndata, etc.
Vi vil se hvordan du får tilgang til disse forskjellige skjemaelementene ved hjelp av Selenium Web-driver med Java. Selenium innkapsler hvert formelement som et objekt av 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.
Introduksjon til WebElement, findElement(), findElements()
Selenium Web Driver innkapsler et enkelt skjemaelement som et objekt av WebElement.
Det er forskjellige teknikker som WebDriver identifiserer skjemaelementene basert på de forskjellige egenskapene til webelementene som ID, Navn, Klasse, XPath, Tagname, CSS Selectors, link Text, etc.
Web Driver gir følgende to WebElement-metoder for å finne elementene.
- findElement() – finner et enkelt webelement og returnerer som et WebElement Selenium gjenstand.
- findElements() – returnerer en liste over WebElement-objekter som samsvarer med lokaliseringskriteriene.
La oss se kodebitene for å få et enkelt element – tekstfelt på en nettside som et objekt av WebElement ved å bruke 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å kalle findElement()-metoden tilgjengelig på WebDriver-klassen og få et objekt av WebElement.
Se nedenfor for å se hvordan det gjøres.
Selenium Skriv inn tekst
Inndatabokser refererer til en av disse to typene:
- Tekstfelt- Selenium skriv inn tekstbokser som godtar innskrevne verdier og viser dem som de er.
- Passordfelt– tekstbokser som godtar innskrevne verdier, men maskerer dem som en serie spesialtegn (vanligvis prikker og stjerner) for å unngå at sensitive verdier vises.
Lokalister
Metoden findElement() tar én parameter som er en locator til elementet. Ulike locatorer som By.id(), By.name(), By.xpath(), By.CSSSelector() osv. finner elementene på siden ved å bruke egenskapene deres som “““ id, navn eller bane osv.
Du kan bruke plugins som Fire path for å få hjelp med å få id, xpath osv. til elementene.
Ved å bruke eksempelsiden https://demo.guru99.com/test/login.html gitt nedenfor er koden for å finne "E-postadresse"-tekstfeltet ved å bruke id-søkeren og "Passord"-feltet ved å bruke navnsøkeren.
- E-posttekstfeltet er plassert ved ID
- Passordfeltet er plassert ved navn
sendnøkler inn Selenium
sendkeys() i Selenium er en metode som brukes til å legge inn redigerbart innhold i tekst- og passordfeltene under testkjøring. Disse feltene identifiseres ved hjelp av locatorer som navn, klasse, id osv. Det er en metode som er tilgjengelig på webelementet. I motsetning til typemetoden, erstatter ikke sendkeys()-metoden eksisterende tekst i noen tekstboks.
Hvordan skrive inn tekst Selenium
For å skrive inn tekst i tekstfeltene og passordfeltene, er sendKeys() metoden tilgjengelig på WebElement i Selenium.
Bruker samme eksempel på https://demo.guru99.com/test/login.html nettsted, her er hvordan vi finner tekstfeltet og passordfeltene og skriver inn tekst Selenium.
- Finn tekstfeltet "E-postadresse" ved å bruke id-søkeren.
- Finn "Passord"-feltet ved å bruke navnesøkeren
- Skriv inn tekst i "E-postadresse" ved å bruke Selenium sendkeys-metoden.
- Skriv inn et passord i "Passord"-feltet ved å bruke sendKeys()-metoden.
Sletting av verdier i inndata Boxes
Ocuco klar() metoden brukes til å slette teksten i en inndataboks. Denne metoden trenger ikke en parameter. Kodebiten nedenfor vil fjerne teksten fra E-post- eller Passord-feltene
Selenium Klikk Knapper
Ocuco Selenium klikk-knappen kan nås ved å bruke click()-metoden.
I eksemplet ovenfor
- Finn knappen for å logge på
- Klikk på "Logg på"-knappen på innloggingssiden til nettstedet for å logge inn på nettstedet.
Selenium Send inn-knapper
Send-knapper brukes til å sende inn hele skjemaet til serveren. Vi kan enten bruke klikk ()-metoden på webelementet som en vanlig knapp som vi har gjort ovenfor eller bruke submit ()-metoden på et hvilket som helst webelement i skjemaet eller på selve submit-knappen.
Når submit() brukes, vil WebDriver slå opp DOM-en for å vite hvilken form elementet tilhører, og deretter utløse submit-funksjonen.
Komplett kode
Her er den komplette arbeidskoden
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.*; public class Form { public static void main(String[] args) { // declaration and instantiation of objects/variables System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); String baseUrl = "https://demo.guru99.com/test/login.html"; driver.get(baseUrl); // Get the WebElement corresponding to the Email Address(TextField) WebElement email = driver.findElement(By.id("email")); // Get the WebElement corresponding to the Password Field WebElement password = driver.findElement(By.name("passwd")); email.sendKeys("abcd@gmail.com"); password.sendKeys("abcdefghlkjl"); System.out.println("Text Field Set"); // Deleting values in the text box email.clear(); password.clear(); System.out.println("Text Field Cleared"); // Find the submit button WebElement login = driver.findElement(By.id("SubmitLogin")); // Using click method to submit form email.sendKeys("abcd@gmail.com"); password.sendKeys("abcdefghlkjl"); login.click(); System.out.println("Login Done with Click"); //using submit method to submit the form. Submit used on password field driver.get(baseUrl); driver.findElement(By.id("email")).sendKeys("abcd@gmail.com"); driver.findElement(By.name("passwd")).sendKeys("abcdefghlkjl"); driver.findElement(By.id("SubmitLogin")).submit(); System.out.println("Login Done with Submit"); //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 lokatoren din igjen ved å bruke Firepath eller Inspect Element i Chrome.
- Sjekk om verdien du brukte i koden er forskjellig fra den for elementet i Firepath nå.
- Noen egenskaper er dynamiske for få elementer. Hvis du finner ut at verdien er annerledes og endres 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, det vil si at webdriveren utførte koden din selv før siden ble fullstendig lastet, osv.
- Legg til en ventetid før findElement() ved å bruke implisitte eller eksplisitte ventetider.
Sammendrag
- Tabellen nedenfor oppsummerer kommandoene for å få tilgang til hver type element diskutert ovenfor
Element | Kommando | Tekniske beskrivelser |
---|---|---|
Input Box | sendKeys() | brukes til å legge inn verdier i tekstbokser |
klar() | brukes til å fjerne tekstbokser for gjeldende verdi | |
lenker | klikk() | brukes til å klikke på koblingen og vente til sideinnlastingen er fullført før du fortsetter til neste kommando. |
Send Button | send inn() |
- WebDriver tillater valg av mer enn ett alternativ i et multippel SELECT-element.
- Du kan bruke submit()-metoden på et hvilket som helst element i skjemaet. WebDriver vil automatisk utløse innsendingsfunksjonen til skjemaet der det elementet tilhører.