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: