Selen Form WebElement: TextBox, Button, sendkeys (), klik ()

Indholdsfortegnelse:

Anonim

Formularer er de grundlæggende webelementer til at modtage information fra besøgende på hjemmesiden. Webformularer har forskellige GUI-elementer som tekstfelter, adgangskodefelter, afkrydsningsfelter, radioknapper, rullelister, filinput osv.

Vi vil se, hvordan du får adgang til disse forskellige formelementer ved hjælp af Selenium Web Driver med Java. Selen indkapsler hvert formelement som et objekt i WebElement. Det giver API til at finde elementerne og handle på dem som at indtaste tekst i tekstfelter, klikke på knapperne osv. Vi vil se de metoder, der er tilgængelige for at få adgang til hvert formularelement.

I denne vejledning vil vi se, hvordan man identificerer følgende formularer

  • Introduktion til WebElement, findElement (), findElements ()
  • Inputboks
  • Indtastning af værdier i indtastningsfelter
  • Sletning af værdier i inputbokse
  • Knapper
  • Send knapper
  • Komplet kode
  • Fejlfinding

Introduktion til WebElement, findElement (), findElements ()

Selenium Web Driver indkapsler et simpelt formelement som et objekt for WebElement.

Der er forskellige teknikker, hvormed WebDriver identificerer formelementerne baseret på de forskellige egenskaber ved webelementerne som ID, navn, klasse, XPath, Tagname, CSS-vælgere, linktekst osv.

Webdriver giver følgende to WebElement-metoder til at finde elementerne.

  • findElement () - finder et enkelt webelement og returnerer som et WebElement Selen-objekt.
  • findElements () - returnerer en liste over WebElement-objekter, der matcher søgekriterierne.

Lad os se kodestykkerne for at få et enkelt element - Tekstfelt på en webside som et objekt for WebElement ved hjælp af findElement () -metoden. Vi skal dække findElements () -metoden til at finde flere elementer i efterfølgende tutorials.

Trin 1: Vi skal importere denne pakke for at oprette objekter fra webelementer

Trin 2: Vi er nødt til at kalde findElement () -metoden tilgængelig på WebDriver-klassen og få et objekt fra WebElement.

Se nedenfor for at se, hvordan det gøres.

Inputboks

Indtastningsfelter henviser til en af ​​disse to typer:

  1. Tekstfelter - Selen indtaster tekstfelter, der accepterer indtastede værdier og viser dem, som de er.
  2. Adgangskodefelter - tekstfelter, der accepterer indtastede værdier, men maskerer dem som en række specialtegn (ofte prikker og stjerner) for at undgå, at følsomme værdier vises.

Findere

Metoden findElement () tager en parameter, der er en lokalisering af elementet. Forskellige placatorer som By.id (), By.name (), By.xpath (), By.CSSSelector () osv. Find elementerne på siden ved hjælp af deres egenskaber som '' `` '' id, navn eller sti, etc.

Du kan bruge plugins som Fire path for at få hjælp til at få id'et, xpath osv. Af elementerne.

Brug af eksempelsiden http://demo.guru99.com/test/login.html, der er angivet nedenfor, er koden til at finde tekstfeltet "E-mail-adresse" ved hjælp af id-lokalisatoren og "Password" -feltet ved hjælp af navnelokatoren.

  1. E-mail-tekstfelt findes efter id
  2. Password-feltet findes efter navn

sendkeys i selen

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 lokaliseringer som navn, klasse, id osv. Det er en metode, der er tilgængelig på webelementet. I modsætning til typemetoden erstatter metoden sendkeys () ikke eksisterende tekst i nogen tekstboks.

Indtastning af værdier i indtastningsfelter

SendKeys () er metoden, der er tilgængelig på WebElement i Selen, for at indtaste tekst i tekstfelterne og adgangskodefelterne.

Ved hjælp af det samme eksempel på http://demo.guru99.com/test/login.html site, her er hvordan vi finder tekstfeltet og adgangskodefelterne og indtaster tekst i selen.

  1. Find tekstfeltet "E-mail-adresse" ved hjælp af id-lokalisatoren.
  2. Find feltet "Adgangskode" ved hjælp af navnelokatoren
  3. Indtast tekst i "E-mail-adresse" ved hjælp af Selen sendkeys-metoden.
  4. Indtast en adgangskode i feltet "Adgangskode" ved hjælp af sendKeys () -metoden.

Sletning af værdier i inputbokse

Metoden clear () bruges til at slette teksten i et indtastningsfelt. Denne metode har ikke brug for en parameter . Kodestykket nedenfor rydder teksten fra felterne E-mail eller Adgangskode

Knapper

Du kan få adgang til Selenium-klikknappen ved hjælp af klikmetoden ().

I eksemplet ovenfor

  1. Find knappen for at logge på
  2. Klik på knappen "Log ind" på login-siden på siden for at logge ind på siden.

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 metoden send () på ethvert webelement i formularen eller på selve afsendeknappen.

Når indsende () bruges, vil WebDriver slå op i DOM for at vide, hvilken form elementet tilhører, og derefter udløse dets indsendefunktion.

Komplet kode

Her er den komplette arbejdskode

importer org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium. *;offentlig klasse formular {public static void main (String [] args) {// erklæring og instantiering af objekter / variablerSystem.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver-driver = ny ChromeDriver ();Streng baseUrl = "http://demo.guru99.com/test/login.html";driver.get (baseUrl);// Hent WebElement, der svarer til e-mail-adressen (TextField)WebElement-e-mail = driver.findElement (By.id ("e-mail"));// Hent WebElement, der svarer til adgangskodefeltetWebElement-adgangskode = driver.findElement (By.name ("passwd"));email.sendKeys (" Denne e-mail-adresse er beskyttet mod spambots. Du skal aktivere JavaScript for at kunne se den.");password.sendKeys ("abcdefghlkjl");System.out.println ("Tekstfelt sæt");// Sletning af værdier i tekstfeltetemail.clear ();password.clear ();System.out.println ("Tekstfelt ryddet");// Find knappen SendWebElement login = driver.findElement (By.id ("SubmitLogin"));// Brug af klikmetoden til at indsende formularemail.sendKeys (" Denne e-mail-adresse er beskyttet mod spambots. Du skal aktivere JavaScript for at kunne se den."); password.sendKeys ("abcdefghlkjl"); login.click (); System.out.println ("Login udført med klik"); // ved hjælp af indsendemetoden til at indsende formularen. Send brugt på adgangskodefeltdriver.get (baseUrl); driver.findElement (By.id ("email")). sendKeys (" Denne e-mail-adresse er beskyttet mod spambots. Du skal aktivere JavaScript for at kunne se den."); driver.findElement (By.name ("passwd")). sendKeys ("abcdefghlkjl"); driver.findElement (By.id ("SubmitLogin")). indsend (); System.out.println ("Login udført med indsendelse"); //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 åbnede siden.

  1. Tjek din lokaliser igen ved hjælp af Firepath eller Inspect Element i Chrome.
  2. Kontroller, om den værdi, du brugte i koden, er forskellig fra den for elementet i Firepath nu.
  3. Nogle egenskaber er dynamiske for få elementer. I tilfælde af at du finder ud af, at værdien er forskellig og ændrer sig dynamisk, kan du overveje at bruge By.xpath () eller By.cssSelector (), som er mere pålidelige men komplekse måder.
  4. Nogle gange kan det også være et venteproblem, dvs. webdriveren udførte din kode, selv før siden blev indlæst helt osv.
  5. Tilføj et ventetid før findElement () ved hjælp af implicit eller eksplicit ventetid.

Resumé

  • Tabellen nedenfor opsummerer kommandoerne for at få adgang til hver type element diskuteret ovenfor
Element Kommando Beskrivelse
Inputboks sendKeys () bruges til at indtaste værdier i tekstfelter
klar() bruges til at rydde tekstfelter for den aktuelle værdi
Links klik () bruges til at klikke på linket og vente på, at sideindlæsningen er afsluttet, før du fortsætter til næste kommando.
Send-knap Indsend()
  • WebDriver tillader valg af mere end en mulighed i et multiple SELECT-element.
  • Du kan bruge metoden send () på ethvert element i formularen. WebDriver udløser automatisk indsendelsesfunktionen for den form, hvor elementet tilhører.