WebElement i Selenium
โก Smart opsummering
WebElement i Selenium reprรฆsenterer alle formularkontroller som et programmerbart objekt, der gรธr det muligt for testere at interagere med tekstfelter, afkrydsningsfelter, radioknapper og indsende elementer ved hjรฆlp af metoderne findElement, sendKeys, click, clear og submit. Java kodeeksempler.

WebElement i Selenium
Formularer er de grundlรฆggende webelementer, der indsamler oplysninger fra besรธgende pรฅ webstedet. Webformularer indeholder forskellige GUI-kontroller sรฅsom tekstbokse, adgangskodefelter, afkrydsningsfelter, radioknapper, rullemenuer og filinput.
Denne vejledning forklarer, hvordan man fรฅr adgang til hvert formularelement ved hjรฆlp af Selenium WebDriver med Java. Selenium indkapsler hvert formelement som et objekt af WebElement. Den tilbyder en API til at finde elementer og reagere pรฅ dem, herunder indtastning af tekst, klik pรฅ knapper og indsendelse af formularer. Afsnittene nedenfor dรฆkker de metoder, der er tilgรฆngelige for hvert formularelement.
Introduktion til WebElement, findElement(), findElements()
Selenium WebDriver reprรฆsenterer et simpelt formularelement som et objekt for WebElement.
WebDriver identificerer formularelementer ved hjรฆlp af forskellige egenskaber for webelementet, herunder ID, navn, klasse XPath, Tagname, CSS-selektorer og linktekst.
WebDriver tilbyder fรธlgende to WebElement-metoder til at finde elementer:
- findElement() โ finder et enkelt webelement og returnerer det som et WebElement Selenium objekt.
- findElements() โ returnerer en liste over WebElement-objekter, der matcher lokaliseringskriterierne.
Eksemplet nedenfor viser, hvordan man henter et enkelt element, et tekstfelt pรฅ en webside, som et WebElement-objekt ved hjรฆlp af findElement()-metoden. findElements()-metoden til at finde flere elementer er dรฆkket i efterfรธlgende vejledninger.
Trin 1) Importer den pakke, der krรฆves for at oprette WebElement-objekter.
Trin 2) Kald metoden findElement(), der er tilgรฆngelig i WebDriver-klassen, for at hente et WebElement-objekt, som vist nedenfor.
Selenium Indtastningstekst
Inputbokse refererer til en af โโdisse to typer:
- Tekstfelter - Selenium inputtekstfelter, der accepterer indtastede vรฆrdier og viser dem prรฆcis som indtastet.
- Adgangskodefelter โ tekstbokse, der accepterer indtastede vรฆrdier, men maskerer dem som en rรฆkke specialtegn (normalt prikker eller stjerner) for at skjule fรธlsomme input.
locators
Metoden findElement() bruger รฉn parameter, som er en locator, der peger pรฅ elementet. Forskellige locatorer, herunder By.id(), By.name(), By.xpath() og By.cssSelector(), finder elementer pรฅ siden ved hjรฆlp af deres egenskaber sรฅsom id, navn eller sti.
Du kan bruge plugins som FirePath til at hente id'et, xpath'en og andre locator-vรฆrdier for elementer.
Brug af eksempelsiden https://demo.guru99.com/test/login.html, koden nedenfor finder tekstfeltet "E-mailadresse" ved hjรฆlp af id-lokaliseringsvรฆrktรธjet og feltet "Adgangskode" ved hjรฆlp af navnelokaliseringsvรฆrktรธjet.
- 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 adgangskodefelter under testudfรธrelse. Disse felter identificeres via lokatorer sรฅsom navn, klasse og id. Metoden er tilgรฆngelig pรฅ WebElement-objektet. I modsรฆtning til type-metoden erstatter sendKeys() ikke den eksisterende tekst i en tekstboks.
Sรฅdan indtaster du tekst Selenium
For at indtaste tekst i tekstfelter og adgangskodefelter er sendKeys() den metode, der er tilgรฆngelig pรฅ WebElement i Selenium.
Bruger det samme eksempel pรฅ https://demo.guru99.com/test/login.html, nedenstรฅende uddrag finder tekstfeltet og adgangskodefeltet og indtaster tekst i Selenium.
- Find tekstfeltet "E-mailadresse" ved hjรฆlp af id-sรธgeren.
- Find feltet "Adgangskode" ved hjรฆlp af navnefinderen.
- Indtast tekst i "E-mailadresse" ved hjรฆlp af Selenium sendKeys-metoden.
- Indtast en adgangskode i feltet "Password" ved hjรฆlp af sendKeys() metoden.
Sletning af vรฆrdier i input Boxes
klar() Metoden sletter teksten i et inputfelt. Denne metode behรธver ikke en parameter. Uddraget nedenfor fjerner teksten fra felterne E-mail eller Adgangskode.
Selenium Klik pรฅ knapper
Selenium Klikknappen tilgรฅs ved hjรฆlp af click()-metoden.
I eksemplet ovenfor
- Find knappen for at logge ind.
- Klik pรฅ knappen "Log ind" pรฅ webstedets loginside for at godkende.
Selenium Send knapper
Send-knapper sender hele formularen til serveren. Du kan enten kalde click()-metoden pรฅ WebElementet, som vist ovenfor, eller bruge submit()-metoden pรฅ et hvilket som helst element i formularen eller pรฅ selve send-knappen.
Nรฅr submit() bruges, slรฅr WebDriver DOM'en op for at identificere den formular, som elementet tilhรธrer, og udlรธser derefter dens submit-funktion.
Komplet Code
Her er den komplette fungerende kode.
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 sรธger efter elementer, er elementet ikke til stede pรฅ siden i det รธjeblik, WebDriver tilgik det.
- Tjek din lokator igen ved hjรฆlp af FirePath eller indstillingen Inspicer Element i Chrome.
- Kontroller, om den anvendte vรฆrdi i koden afviger fra den aktuelle vรฆrdi af elementet, der ses i FirePath.
- Nogle attributter er dynamiske for bestemte elementer. Hvis en vรฆrdi รฆndres dynamisk, skal du skifte til By.xpath() eller By.cssSelector(), som er mere pรฅlidelige, men lidt mere komplekse.
- Nogle gange er problemet en ventetilstand; WebDriver udfรธrer muligvis koden, fรธr siden er fรฆrdigindlรฆst.
- Tilfรธj en ventetid fรธr findElement() ved hjรฆlp af implicitte eller eksplicitte ventetider.
Resumรฉ
- Tabellen nedenfor opsummerer kommandoerne til at fรฅ adgang til hver type element, der er omtalt ovenfor.
| Element | Kommando | Beskrivelse |
|---|---|---|
| Input Box | sendKeys () | Bruges til at indtaste vรฆrdier i tekstbokse. |
| klar() | Bruges til at rydde tekstbokse for deres aktuelle vรฆrdi. | |
| Links | klik() | Bruges til at klikke pรฅ linket og vente pรฅ, at siden indlรฆses, fรธr man fortsรฆtter til den nรฆste kommando. |
| Indsend Button | Indsend() | Bruges til at indsende formularen ved at udlรธse den overordnede formulars indsendelseshรฅndtering. |
- WebDriver tillader valg af mere end รฉn mulighed i et multiple SELECT-element.
- Du kan bruge submit()-metoden pรฅ ethvert element i formularen. WebDriver udlรธser automatisk submit-funktionen for den formular, som elementet tilhรธrer.






