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

Introduktion til WebElement FindElement, FindElements

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:

  1. Tekstfelter- Selenium input tekstbokse, der accepterer indtastede værdier og viser dem, som de er.
  2. 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.

    Selenium Indtastningstekst

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.

locators

  1. E-mail-tekstfeltet er placeret efter Id
  2. 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.

Tekst ind Selenium

  1. Find tekstfeltet "E-mail-adresse" ved hjælp af id-finderen.
  2. Find feltet "Adgangskode" ved hjælp af navnefinderen
  3. Indtast tekst i "E-mailadresse" ved hjælp af Selenium sendkeys metode.
  4. 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

Sletning af værdier i input Boxes

Selenium Klik på knapper

Selenium klik-knappen kan tilgås ved hjælp af click()-metoden.

I eksemplet ovenfor

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

Selenium Klik på knapper

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.

Selenium Send knapper

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.

  1. Tjek din locator igen ved hjælp af Firepath eller Inspect Element i Chrome.
  2. Tjek, om den værdi, du brugte i koden, er forskellig fra værdien for elementet i Firepath nu.
  3. 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.
  4. 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.
  5. 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.