WebElement i Selenium

โšก Smart oppsummering

WebElement i Selenium representerer hver skjemakontroll som et programmerbart objekt, slik at testere kan samhandle med tekstfelt, avmerkingsbokser, radioknapper og sende elementer ved hjelp av findElement, sendKeys, click, clear og submit-metodene gjennom Java kodeeksempler.

  • ๐Ÿงฉ Lokaliseringspresisjon: Identifiser skjemaelementer etter id, navn, xpath eller CSS-velger via findElement() for รฅ sikre stabil interaksjon med DOM-en.
  • โœ๏ธ Inndatahรฅndtering: Send redigerbar tekst til felt ved hjelp av sendKeys() uten รฅ overskrive eksisterende verdier under automatisert utfรธrelse.
  • ๐Ÿงน Felttilbakestilling: Tรธm inndatabokser med clear()-metoden fรธr du legger inn data pรฅ nytt, for รฅ forhindre restverdier i senere deklarasjoner.
  • ๐Ÿ–ฑ๏ธ Knappinteraksjon: Utlรธs pรฅloggings- eller navigasjonshandlinger via click()-metoden pรฅ den samsvarende WebElement-referansen.
  • ๐Ÿ“จ Skjemainnlevering: Bruk submit() pรฅ et hvilket som helst element i et skjema, slik at WebDriver automatisk sender den overordnede skjema-send-hรฅndtereren.
  • ๐Ÿ›ก๏ธ Stabilitetstips: Legg til implisitte eller eksplisitte ventetider fรธr findElement()-kall for รฅ forhindre NoSuchElementException pรฅ dynamisk lastede sider.

WebElement i Selenium

WebElement i Selenium

Skjemaer er de grunnleggende webelementene som samler inn informasjon fra besรธkende pรฅ nettstedet. Nettskjemaer inkluderer forskjellige GUI-kontroller som tekstbokser, passordfelt, avmerkingsbokser, radioknapper, rullegardinmenyer og filinndata.

Denne veiledningen forklarer hvordan du fรฅr tilgang til hvert skjemaelement ved hjelp av Selenium WebDriver med Java. Selenium innkapsler hvert formelement som et objekt av WebElement. Den tilbyr et API for รฅ finne elementer og handle ut fra dem, inkludert รฅ skrive inn tekst, klikke pรฅ knapper og sende inn skjemaer. Avsnittene nedenfor dekker metodene som er tilgjengelige for hvert skjemaelement.

Introduksjon til WebElement FindElement,FindElements

Introduksjon til WebElement, findElement(), findElements()

Selenium WebDriver representerer et enkelt formelement som et objekt for WebElement.

WebDriver identifiserer skjemaelementer ved hjelp av forskjellige egenskaper for webelementet, inkludert ID, navn, klasse XPath, Tagnavn, CSS-selektorer og lenketekst.

WebDriver tilbyr fรธlgende to WebElement-metoder for รฅ finne elementer:

  • findElement() โ€“ finner et enkelt webelement og returnerer det som et WebElement Selenium gjenstand.
  • findElements() โ€“ returnerer en liste over WebElement-objekter som samsvarer med lokaliseringskriteriene.

Eksemplet nedenfor viser hvordan du henter et enkelt element, et tekstfelt pรฅ en nettside, som et WebElement-objekt ved hjelp av findElement()-metoden. findElements()-metoden for รฅ finne flere elementer dekkes i senere veiledninger.

Trinn 1) Importer pakken som kreves for รฅ opprette WebElement-objekter.

Trinn 2) Kall findElement()-metoden som er tilgjengelig i WebDriver-klassen for รฅ hente et WebElement-objekt, som vist nedenfor.

Selenium Skriv inn tekst

Inndatabokser refererer til en av disse to typene:

  1. Tekstfelt - Selenium tekstbokser som godtar skrevne verdier og viser dem nรธyaktig slik de er skrevet inn.
  2. Passordfelt โ€“ tekstbokser som godtar skrevne verdier, men maskerer dem som en serie spesialtegn (vanligvis prikker eller stjerner) for รฅ skjule sensitiv inndata.

    Selenium Skriv inn tekst

Lokalister

findElement()-metoden tar รฉn parameter, som er en locator som peker til elementet. Ulike locatorer, inkludert By.id(), By.name(), By.xpath() og By.cssSelector(), finner elementer pรฅ siden ved hjelp av egenskapene deres, som id, navn eller sti.

Du kan bruke programtillegg som FirePath for รฅ hente ID-, XPATH- og andre locator-verdier for elementer.

Ved รฅ bruke eksempelsiden https://demo.guru99.com/test/login.html, koden nedenfor finner tekstfeltet ยซE-postadresseยป ved hjelp av ID-lokaliseringen og ยซPassordยป-feltet ved hjelp av navnelokaliseringen.

Lokalister

  1. E-posttekstfeltet er plassert etter ID.
  2. Passordfeltet er plassert etter navn.

sendnรธkler inn Selenium

sendKeys() i Selenium er en metode som brukes til รฅ legge inn redigerbart innhold i tekst- og passordfelt under testkjรธring. Disse feltene identifiseres gjennom lokatorer som navn, klasse og id. Metoden er tilgjengelig pรฅ WebElement-objektet. I motsetning til type-metoden erstatter ikke sendKeys() den eksisterende teksten i en tekstboks.

Hvordan skrive inn tekst Selenium

For รฅ skrive inn tekst i tekstfelt og passordfelt, er sendKeys() metoden som er tilgjengelig pรฅ WebElement i Selenium.

Bruker samme eksempel pรฅ https://demo.guru99.com/test/login.html, kodebiten nedenfor finner tekstfeltet og passordfeltet og skriver inn tekst i Selenium.

Tekst inn Selenium

  1. Finn tekstfeltet ยซE-postadresseยป ved hjelp av ID-sรธkeren.
  2. Finn ยซPassordยป-feltet ved hjelp av navnesรธkeren.
  3. Skriv inn tekst i "E-postadresse" ved รฅ bruke Selenium sendKeys-metoden.
  4. Skriv inn et passord i "Passord"-feltet ved รฅ bruke sendKeys()-metoden.

Sletting av verdier i inndata Boxes

Ocuco klar() Metoden sletter teksten i en inndataboks. Denne metoden trenger ikke en parameter. Kodeutdraget nedenfor fjerner teksten fra feltene for e-post eller passord.

Sletting av verdier i inndata Boxes

Selenium Klikk Knapper

Ocuco Selenium klikkknappen nรฅs ved hjelp av click()-metoden.

I eksemplet ovenfor

  1. Finn knappen for รฅ logge inn.
  2. Klikk pรฅ ยซLogg innยป-knappen pรฅ nettstedets innloggingsside for รฅ autentisere.

Selenium Klikk Knapper

Selenium Send inn-knapper

Send-knapper sender hele skjemaet til serveren. Du kan enten kalle click()-metoden pรฅ WebElement, som vist ovenfor, eller bruke submit()-metoden pรฅ et hvilket som helst element i skjemaet eller pรฅ selve send-knappen.

Selenium Send inn-knapper

Nรฅr submit() brukes, slรฅr WebDriver opp DOM-en for รฅ identifisere skjemaet som elementet tilhรธrer, og utlรธser deretter submit-funksjonen.

Komplett Code

Her er den komplette fungerende koden.

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();
    }
}

Feilsรธking

Hvis du stรธter pรฅ NoSuchElementException() mens du sรธker etter elementer, finnes ikke elementet pรฅ siden i det รธyeblikket WebDriver รฅpnet det.

  1. Sjekk posisjoneringsverktรธyet ditt pรฅ nytt ved hjelp av FirePath eller alternativet Inspiser element i Chrome.
  2. Sjekk om verdien som brukes i koden er forskjellig fra den gjeldende verdien til elementet som vises i FirePath.
  3. Noen attributter er dynamiske for visse elementer. Hvis en verdi endres dynamisk, bytt til By.xpath() eller By.cssSelector(), som er mer pรฅlitelige, men litt mer komplekse.
  4. Noen ganger er problemet en ventetilstand; WebDriver kan kjรธre koden fรธr siden er ferdig lastet inn.
  5. Legg til en ventetid fรธr findElement() ved รฅ bruke implisitte eller eksplisitte ventetider.

Sammendrag

  • Tabellen nedenfor oppsummerer kommandoene for รฅ fรฅ tilgang til hver type element som er omtalt ovenfor.
Element Kommando Tekniske beskrivelser
Input Box sendKeys() Brukes til รฅ legge inn verdier i tekstbokser.
klar() Brukes til รฅ fjerne gjeldende verdi fra tekstbokser.
lenker klikk() Brukes til รฅ klikke pรฅ lenken og vente til siden er lastet inn fรธr du gรฅr videre til neste kommando.
Send Button send inn() Brukes til รฅ sende inn skjemaet ved รฅ utlรธse det overordnede skjemaets innsendingsbehandler.
  • WebDriver tillater valg av mer enn ett alternativ i et multippel SELECT-element.
  • Du kan bruke submit()-metoden pรฅ et hvilket som helst element i skjemaet. WebDriver utlรธser automatisk submit-funksjonen til skjemaet som elementet tilhรธrer.

Spรธrsmรฅl og svar

findElement() returnerer det fรธrste samsvarende WebElementet og kaster NoSuchElementException nรฅr ingen finnes. findElements() returnerer en liste over samsvarende WebElementer og returnerer en tom liste nรฅr ingen elementer samsvarer med locatoren.

Et WebElement er et Selenium wrapper som eksponerer automatiseringsmetoder som sendKeys, click og clear. Et HTML-element er den underliggende DOM-noden. WebDriver finner DOM-noden og returnerer en WebElement-referanse for interaksjon.

Ja. AI-assisterte verktรธy analyserer DOM-en og foreslรฅr stabile locatorer ved hjelp av id, navn, relativ xpath eller CSS-selektorer. De reduserer locator-skjรธrhet ved รฅ oppdage unike attributtkombinasjoner og foreslรฅ fallbacks nรฅr et attributt endres.

Ja. AI-drevne selvreparerende lokaliseringsverktรธy binder automatisk et WebElement pรฅ nytt nรฅr et attributt endres. Dette reduserer ustabile feil, reduserer vedlikeholdsarbeidet og holder Selenium suiter stabile pรฅ tvers av hyppige UI-oppdateringer i agile leveringssykluser.

Vanlige WebElement-unntak inkluderer StaleElementReferenceException, ElementNotInteractableException, ElementClickInterceptedException, InvalidElementStateException og TimeoutException. Hver av dem indikerer et annet DOM-, synlighets- eller synkroniseringsproblem som bรธr hรฅndteres med ventetider eller oppdaterte elementreferanser.

Oppsummer dette innlegget med: