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.

  • ๐Ÿงฉ Lokaliseringsprรฆcision: Identificer formularelementer efter id, navn, xpath eller CSS-vรฆlger via findElement() for at sikre stabil interaktion med DOM'en.
  • โœ๏ธ Inputhรฅndtering: Send redigerbar tekst til felter ved hjรฆlp af sendKeys() uden at overskrive eksisterende vรฆrdier under automatisk udfรธrelse.
  • ๐Ÿงน Feltnulstilling: Ryd inputfelter med clear()-metoden, fรธr du indtaster data igen, for at forhindre restvรฆrdier i senere assertions.
  • ๐Ÿ–ฑ๏ธ Knapinteraktion: Udlรธs login- eller navigationshandlinger via click()-metoden pรฅ den matchende WebElement-reference.
  • ๐Ÿ“จ Formularindsendelse: Brug submit() pรฅ ethvert element i en formular, sรฅ WebDriver automatisk sender dens overordnede formulars submit handler.
  • ๐Ÿ›ก๏ธ Stabilitetstip: Tilfรธj implicitte eller eksplicitte ventetider fรธr findElement()-kald for at forhindre NoSuchElementException pรฅ dynamisk indlรฆste sider.

WebElement i Selenium

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

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:

  1. Tekstfelter - Selenium inputtekstfelter, der accepterer indtastede vรฆrdier og viser dem prรฆcis som indtastet.
  2. 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.

    Selenium Indtastningstekst

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.

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

Tekst ind Selenium

  1. Find tekstfeltet "E-mailadresse" ved hjรฆlp af id-sรธgeren.
  2. Find feltet "Adgangskode" ved hjรฆlp af navnefinderen.
  3. Indtast tekst i "E-mailadresse" ved hjรฆlp af Selenium sendKeys-metoden.
  4. 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.

Sletning af vรฆrdier i input Boxes

Selenium Klik pรฅ knapper

Selenium Klikknappen 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รฅ webstedets loginside for at godkende.

Selenium Klik pรฅ knapper

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.

Selenium Send knapper

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.

  1. Tjek din lokator igen ved hjรฆlp af FirePath eller indstillingen Inspicer Element i Chrome.
  2. Kontroller, om den anvendte vรฆrdi i koden afviger fra den aktuelle vรฆrdi af elementet, der ses i FirePath.
  3. 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.
  4. Nogle gange er problemet en ventetilstand; WebDriver udfรธrer muligvis koden, fรธr siden er fรฆrdigindlรฆst.
  5. 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.

Ofte Stillede Spรธrgsmรฅl

findElement() returnerer det fรธrste matchende WebElement og udlรธser NoSuchElementException, nรฅr ingen findes. findElements() returnerer en liste over matchende WebElements og returnerer en tom liste, nรฅr intet element matcher locatoren.

Et WebElement er et Selenium wrapper, der eksponerer automatiseringsmetoder som sendKeys, click og clear. Et HTML-element er den underliggende DOM-node. WebDriver finder DOM-noden og returnerer en WebElement-reference til interaktion.

Ja. AI-assisterede vรฆrktรธjer analyserer DOM'en og foreslรฅr stabile locatorer ved hjรฆlp af id, navn, relativ xpath eller CSS-selektorer. De reducerer locator-skรธrhed ved at registrere unikke attributkombinationer og foreslรฅ fallbacks, nรฅr en attribut รฆndres.

Ja. AI-drevne selvreparerende locators binder automatisk et WebElement igen, nรฅr en attribut รฆndres. Dette reducerer ustabile fejl, sรฆnker vedligeholdelsesindsatsen og holder Selenium Suiterne er stabile pรฅ tvรฆrs af hyppige brugergrรฆnsefladeopdateringer i agile leveringscyklusser.

Almindelige WebElement-undtagelser inkluderer StaleElementReferenceException, ElementNotInteractableException, ElementClickInterceptedException, InvalidElementStateException og TimeoutException. Hver af dem angiver et forskelligt DOM-, synligheds- eller synkroniseringsproblem, der skal hรฅndteres med ventetider eller opdaterede elementreferencer.

Opsummer dette indlรฆg med: