WebElement i Selenium: TekstBox, Knap, sendkeys(), klik()
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 | Description |
---|---|---|
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.