WebElement u Selenium

⚡ Pametni sažetak

WebElement u Selenium predstavlja svaku kontrolu obrasca kao programabilni objekt, omogućujući testerima interakciju s tekstualnim poljima, potvrdnim okvirima, radio gumbima i elementima za slanje pomoću metoda findElement, sendKeys, click, clear i submit putem Java primjeri koda.

  • 🧩 Preciznost lokatora: Identificirajte elemente obrasca prema ID-u, nazivu, XPath-u ili CSS selektoru putem findElement() kako biste osigurali stabilnu interakciju s DOM-om.
  • ✍️ Rukovanje unosom: Pošaljite tekst koji se može uređivati ​​u polja pomoću funkcije sendKeys() bez prepisivanja postojećih vrijednosti tijekom automatskog izvršavanja.
  • 🧹 Resetiranje polja: Prije ponovnog unosa podataka, obrišite polja za unos pomoću metode clear(), čime se sprječavaju rezidualne vrijednosti u kasnijim tvrdnjama.
  • 🖱️ Interakcija gumba: Pokrenite radnje prijave ili navigacije putem metode click() na odgovarajućoj referenci WebElement.
  • 📨 Slanje obrasca: Koristite submit() na bilo kojem elementu unutar obrasca tako da WebDriver automatski šalje svoj nadređeni rukovatelj slanjem obrasca.
  • 🛡️ Savjet za stabilnost: Dodajte implicitna ili eksplicitna čekanja prije poziva findElement() kako biste spriječili NoSuchElementException na dinamički učitanim stranicama.

WebElement u Selenium

WebElement u Selenium

Obrasci su temeljni web elementi koji prikupljaju informacije od posjetitelja web stranice. Web obrasci uključuju različite GUI kontrole kao što su tekstualni okviri, polja za lozinku, potvrdni okviri, radio gumbi, padajući izbornici i unosi datoteka.

Ovaj vodič objašnjava kako pristupiti svakom elementu obrasca pomoću Selenium WebDriver sa Java. Selenium enkapsulira svaki element obrasca kao objekt WebElementa. Pruža API za lociranje elemenata i djelovanje na njima, uključujući unos teksta, klikanje gumba i slanje obrazaca. Odjeljci u nastavku pokrivaju metode dostupne za svaki element obrasca.

Uvod u WebElement FindElement, FindElements

Uvod u WebElement, findElement(), findElements()

Selenium WebDriver predstavlja jednostavan element obrasca kao objekt od WebElement.

WebDriver identificira elemente obrasca koristeći različita svojstva web elementa, uključujući ID, naziv, klasu, XPath, Oznaka, CSS selektori i tekst poveznice.

WebDriver nudi sljedeće dvije WebElement metode za pronalaženje elemenata:

  • pronađiElement() – pronalazi jedan web element i vraća ga kao WebElement Selenium objekt.
  • pronađiElemente() – vraća popis WebElement objekata koji odgovaraju kriterijima lokatora.

Primjer u nastavku pokazuje kako dohvatiti jedan element, tekstualno polje na web stranici, kao objekt WebElement pomoću metode findElement(). Metoda findElements() za pronalaženje više elemenata obrađena je u sljedećim vodičima.

Korak 1) Uvezite paket potreban za stvaranje WebElement objekata.

Korak 2) Pozovite metodu findElement() dostupnu u klasi WebDriver za dohvaćanje objekta WebElement, kao što je prikazano u nastavku.

Selenium Unos teksta

Okviri za unos odnose se na jednu od ove dvije vrste:

  1. Tekstna polja - Selenium okviri za unos teksta koji prihvaćaju unesene vrijednosti i prikazuju ih točno onako kako su unesene.
  2. Polja za lozinku – tekstualni okviri koji prihvaćaju unesene vrijednosti, ali ih maskiraju kao niz posebnih znakova (obično točke ili zvjezdice) kako bi sakrili osjetljivi unos.

    Selenium Unos teksta

Lokatori

Metoda findElement() prima jedan parametar, a to je lokator koji pokazuje na element. Različiti lokatori, uključujući By.id(), By.name(), By.xpath() i By.cssSelector(), pronalaze elemente na stranici koristeći njihova svojstva kao što su id, name ili path.

Možete koristiti dodatke poput FirePatha za dobivanje ID-a, XPath-a i drugih vrijednosti lokatora za elemente.

Koristeći primjer stranice https://demo.guru99.com/test/login.html, donji kod locira tekstualno polje „Adresa e-pošte“ pomoću lokatora ID-a i polje „Lozinka“ pomoću lokatora imena.

Lokatori

  1. Polje za unos teksta e-pošte nalazi se prema ID-u.
  2. Polje za lozinku nalazi se pored imena.

poslati ključeve u Selenium

sendKeys() u Selenium je metoda koja se koristi za unos sadržaja koji se može uređivati ​​u tekstualna polja i polja za lozinku tijekom izvršavanja testa. Ta se polja identificiraju pomoću lokatora kao što su naziv, klasa i ID. Metoda je dostupna na objektu WebElement. Za razliku od metode type, sendKeys() ne zamjenjuje postojeći tekst u tekstualnom okviru.

Kako unijeti tekst Selenium

Za unos teksta u tekstualna polja i polja za lozinku, sendKeys() je metoda dostupna na WebElementu u Selenium.

Koristeći isti primjer https://demo.guru99.com/test/login.html, donji isječak locira tekstualno polje i polje za lozinku te unosi tekst u Selenium.

Tekst u Selenium

  1. Pronađite tekstualno polje "Adresa e-pošte" pomoću lokatora ID-a.
  2. Pronađite polje "Lozinka" pomoću lokatora imena.
  3. Unesite tekst u "Adresu e-pošte" pomoću Selenium Metoda sendKeys.
  4. Unesite lozinku u polje "Lozinka" pomoću metode sendKeys().

Brisanje vrijednosti u unosu Boxes

The čisto() Metoda briše tekst unutar polja za unos. Ova metoda ne treba parametar. Isječak u nastavku briše tekst iz polja E-pošta ili Lozinka.

Brisanje vrijednosti u unosu Boxes

Selenium Pritisnite Gumbi

The Selenium Gumbu za klik pristupa se pomoću metode click().

U gornjem primjeru

  1. Pronađite gumb za prijavu.
  2. Kliknite gumb "Prijava" na stranici za prijavu na web-mjesto za autentifikaciju.

Selenium Pritisnite Gumbi

Selenium Gumbi za slanje

Gumbi za slanje šalju cijeli obrazac na poslužitelj. Možete pozvati metodu click() na WebElementu, kao što je prikazano gore, ili koristiti metodu submit() na bilo kojem elementu u obrascu ili na samom gumbu za slanje.

Selenium Gumbi za slanje

Kada se koristi submit(), WebDriver pretražuje DOM kako bi identificirao obrazac kojem element pripada, a zatim pokreće njegovu funkciju submit.

potpun Code

Evo kompletnog radnog koda.

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

Rješavanje problema

Ako naiđete na NoSuchElementException() prilikom pronalaženja elemenata, element nije prisutan na stranici u trenutku kada mu je WebDriver pristupio.

  1. Ponovno provjerite svoj lokator pomoću FirePatha ili opcije Inspect Element u Chromeu.
  2. Provjerite razlikuje li se vrijednost korištena u kodu od trenutne vrijednosti elementa prikazanog u FirePathu.
  3. Neki atributi su dinamički za određene elemente. Ako se vrijednost dinamički mijenja, prebacite se na By.xpath() ili By.cssSelector(), koji su pouzdaniji, ali nešto složeniji.
  4. Ponekad je problem uvjet čekanja; WebDriver može izvršiti kôd prije nego što se stranica učitava.
  5. Dodajte čekanje prije findElement() koristeći implicitna ili eksplicitna čekanja.

Rezime

  • Donja tablica sažima naredbe za pristup svakoj vrsti elementa o kojoj se gore raspravljalo.
Element naredba Description
Ulazni Box sendKeys() Koristi se za unos vrijednosti u tekstualne okvire.
čisto() Koristi se za brisanje trenutne vrijednosti tekstualnih okvira.
linkovi klik() Koristi se za klik na poveznicu i čekanje da se učitavanje stranice završi prije prelaska na sljedeću naredbu.
Pošalji Button podnijeti() Koristi se za slanje obrasca aktiviranjem rukovatelja slanjem nadređenog obrasca.
  • WebDriver omogućuje odabir više od jedne opcije u višestrukom SELECT elementu.
  • Metodu submit() možete koristiti na bilo kojem elementu unutar obrasca. WebDriver automatski pokreće funkciju submit obrasca kojem element pripada.

Pitanja i odgovori

findElement() vraća prvi odgovarajući WebElement i baca NoSuchElementException kada ne postoji nijedan. findElements() vraća popis odgovarajućih WebElementa i vraća prazan popis kada nijedan element ne odgovara lokatoru.

WebElement je Selenium omotač koji otkriva metode automatizacije kao što su sendKeys, click i clear. HTML element je temeljni DOM čvor. WebDriver locira DOM čvor i vraća referencu WebElementa za interakciju.

Da. Alati potpomognuti umjetnom inteligencijom analiziraju DOM i predlažu stabilne lokatore koristeći selektore poput id-a, imena, relativnog xpatha ili CSS-a. Smanjuju krhkost lokatora otkrivanjem jedinstvenih kombinacija atributa i predlažući zamjenske opcije kada se atribut promijeni.

Da. Lokatori za samoobnavljanje pokretani umjetnom inteligencijom automatski ponovno povezuju WebElement kada se atribut promijeni. To smanjuje nestabilne kvarove, smanjuje napore održavanja i održava Selenium paketi stabilni tijekom čestih ažuriranja korisničkog sučelja u agilnim ciklusima isporuke.

Uobičajene iznimke WebElementa uključuju StaleElementReferenceException, ElementNotInteractableException, ElementClickInterceptedException, InvalidElementStateException i TimeoutException. Svaka ukazuje na drugačiji problem s DOM-om, vidljivošću ili sinkronizacijom koji treba riješiti čekanjem ili osvježenim referencama elemenata.

Sažmite ovu objavu uz: