WebElement i Selenium
WebElement i Selenium
Formularer er de grundlรฆggende webelementer til at modtage information fra de besรธgende pรฅ webstedet. Webformularer har forskellige GUI-elementer som tekstbokse, adgangskodefelter, afkrydsningsfelter, radioknapper, rullemenuer, filinput osv.
Vi vil se, hvordan du fรฅr adgang til disse forskellige formularelementer ved hjรฆlp af Selenium Web-driver med Java. Selenium indkapsler hvert formelement som et objekt af WebElement. Det giver API til at finde elementerne og handle pรฅ dem som at indtaste tekst i tekstbokse, klikke pรฅ knapperne osv. Vi vil se de metoder, der er tilgรฆngelige for at fรฅ adgang til hvert formularelement.
Introduktion til WebElement, findElement(), findElements()
Selenium Web Driver indkapsler et simpelt formelement som et objekt af WebElement.
Der er forskellige teknikker, hvorved WebDriveren identificerer formularelementerne baseret pรฅ de forskellige egenskaber af webelementerne som ID, Navn, Klasse, XPath, Tagnavn, CSS-vรฆlgere, linktekst osv.
Web Driver giver fรธlgende to WebElement-metoder til at finde elementerne.
- findElement() โ finder et enkelt webelement og returnerer som et WebElement Selenium objekt.
- findElements() โ returnerer en liste over WebElement-objekter, der matcher lokaliseringskriterierne.
Lad os se kodestykkerne for at fรฅ et enkelt element โ โโtekstfelt pรฅ en webside som et objekt af WebElement ved hjรฆlp af findElement()-metoden. Vi vil dรฆkke findElements()-metoden til at finde flere elementer i efterfรธlgende tutorials.
Trin 1) Vi er nรธdt til at importere denne pakke for at skabe objekter af webelementer
Trin 2) Vi skal kalde findElement()-metoden, der er tilgรฆngelig pรฅ WebDriver-klassen, og fรฅ et objekt af WebElement.
Se nedenfor for at se, hvordan det gรธres.
Selenium Indtastningstekst
Inputbokse refererer til en af โโdisse to typer:
- Tekstfelter- Selenium input tekstbokse, der accepterer indtastede vรฆrdier og viser dem, som de er.
- Adgangskodefelterโ tekstbokse, der accepterer indtastede vรฆrdier, men maskerer dem som en rรฆkke specialtegn (almindeligvis prikker og stjerner) for at undgรฅ, at fรธlsomme vรฆrdier vises.
locators
Metoden findElement() tager รฉn parameter, som er en locator til elementet. Forskellige locatorer som By.id(), By.name(), By.xpath(), By.CSSSelector() osv. lokaliserer elementerne pรฅ siden ved hjรฆlp af deres egenskaber som โโโ id, navn eller sti osv.
Du kan bruge plugins som Fire path til at fรฅ hjรฆlp til at fรฅ elementernes id, xpath osv.
Brug af eksempelsiden https://demo.guru99.com/test/login.html nedenfor er koden til at finde "E-mail-adresse"-tekstfeltet ved hjรฆlp af id-finderen og "Adgangskode"-feltet ved hjรฆlp af navnefinderen.
- E-mail-tekstfeltet er placeret efter Id
- Adgangskodefeltet er placeret efter navn
send nรธgler ind Selenium
sendkeys() i Selenium er en metode, der bruges til at indtaste redigerbart indhold i tekst- og adgangskodefelterne under testudfรธrelse. Disse felter identificeres ved hjรฆlp af locatorer som navn, klasse, id osv. Det er en metode, der er tilgรฆngelig pรฅ webelementet. I modsรฆtning til typemetoden erstatter sendkeys()-metoden ikke eksisterende tekst i nogen tekstboks.
Sรฅdan indtaster du tekst Selenium
For at indtaste tekst i tekstfelterne og adgangskodefelterne er sendKeys() metoden tilgรฆngelig pรฅ WebElement i Selenium.
Bruger det samme eksempel pรฅ https://demo.guru99.com/test/login.html websted, her er, hvordan vi finder felterne Tekst og Adgangskode og indtaster tekst i Selenium.
- Find tekstfeltet "E-mail-adresse" ved hjรฆlp af id-finderen.
- Find feltet "Adgangskode" ved hjรฆlp af navnefinderen
- Indtast tekst i "E-mailadresse" ved hjรฆlp af Selenium sendkeys metode.
- Indtast en adgangskode i feltet "Password" ved hjรฆlp af sendKeys() metoden.
Sletning af vรฆrdier i input Boxes
klar() metode bruges til at slette teksten i en inputboks. Denne metode behรธver ikke en parameter. Kodestykket nedenfor fjerner teksten fra felterne E-mail eller Adgangskode
Selenium Klik pรฅ knapper
Selenium klik-knappen kan tilgรฅs ved hjรฆlp af click()-metoden.
I eksemplet ovenfor
- Find knappen for at logge ind
- Klik pรฅ knappen "Log ind" pรฅ sidens login-side for at logge ind pรฅ siden.
Selenium Send knapper
Send knapper bruges til at sende hele formularen til serveren. Vi kan enten bruge klik ()-metoden pรฅ webelementet som en normal knap, som vi har gjort ovenfor, eller bruge submit ()-metoden pรฅ ethvert webelement i formularen eller pรฅ selve submit-knappen.
Nรฅr submit() bruges, vil WebDriver slรฅ DOM op for at vide, hvilken form elementet tilhรธrer, og derefter udlรธse dets submit-funktion.
Komplet kode
Her er den komplette arbejdskode
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();
}
}
Fejlfinding
Hvis du stรธder pรฅ NoSuchElementException(), mens du finder elementer, betyder det, at elementet ikke findes pรฅ siden pรฅ det tidspunkt, hvor webdriveren fik adgang til siden.
- Tjek din locator igen ved hjรฆlp af Firepath eller Inspect Element i Chrome.
- Tjek, om den vรฆrdi, du brugte i koden, er forskellig fra vรฆrdien for elementet i Firepath nu.
- Nogle egenskaber er dynamiske for fรฅ elementer. Hvis du opdager, at vรฆrdien er anderledes og รฆndrer sig dynamisk, kan du overveje at bruge By.xpath() eller By.cssSelector(), som er mere pรฅlidelige, men komplekse mรฅder.
- Nogle gange kan det ogsรฅ vรฆre et venteproblem, dvs. webdriveren udfรธrte din kode, selv fรธr siden blev indlรฆst fuldstรฆndigt osv.
- Tilfรธj en ventetid fรธr findElement() ved hjรฆlp af implicitte eller eksplicitte ventetider.
Resumรฉ
- Tabellen nedenfor opsummerer kommandoerne for at fรฅ adgang til hver type element diskuteret ovenfor
| Element | Kommando | Beskrivelse |
|---|---|---|
| Input Box | sendKeys () | bruges til at indtaste vรฆrdier i tekstbokse |
| klar() | bruges til at rydde tekstbokse for dens aktuelle vรฆrdi | |
| Links | klik() | bruges til at klikke pรฅ linket og vente pรฅ, at sideindlรฆsningen er fuldfรธrt, fรธr du fortsรฆtter til nรฆste kommando. |
| Indsend Button | Indsend() |
- WebDriver tillader valg af mere end รฉn mulighed i et multiple SELECT-element.
- Du kan bruge submit()-metoden pรฅ ethvert element i formularen. WebDriver vil automatisk udlรธse indsendelsesfunktionen for den formular, hvor dette element tilhรธrer.






