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 Code
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.






