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

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 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.

Opsummer dette indlรฆg med: