WebElement be Selenium

โšก Okos รถsszefoglalรณ

WebElement be Selenium minden ลฑrlapvezรฉrlล‘t programozhatรณ objektumkรฉnt รกbrรกzol, lehetล‘vรฉ tรฉve a tesztelล‘k szรกmรกra, hogy szรถvegmezล‘kkel, jelรถlล‘nรฉgyzetekkel, vรกlasztรณgombokkal รฉs submit elemekkel interakciรณba lรฉpjenek a findElement, sendKeys, click, clear รฉs submit metรณdusok hasznรกlatรกval. Java kรณdpรฉldรกk.

  • ๐Ÿงฉ Helymeghatรกrozรณ pontossรกga: Azonosรญtsa az ลฑrlapelemeket azonosรญtรณ, nรฉv, XPath vagy CSS szelektor alapjรกn a findElement() metรณdussal, hogy biztosรญtsa a stabil interakciรณt a DOM-mal.
  • โœ๏ธ Bevitel kezelรฉse: Szerkeszthetล‘ szรถveg kรผldรฉse mezล‘kbe a sendKeys() hasznรกlatรกval anรฉlkรผl, hogy az automatikus vรฉgrehajtรกs sorรกn felรผlรญrnรก a meglรฉvล‘ รฉrtรฉkeket.
  • ๐Ÿงน Mezล‘ visszaรกllรญtรกsa: Az adatok รบjbรณli bevitele elล‘tt tรถrรถlje a beviteli mezล‘ket a clear() metรณdussal, รญgy elkerรผlve a maradvรกnyรฉrtรฉkeket a kรฉsล‘bbi รกllรญtรกsokban.
  • ๐Ÿ–ฑ๏ธ Gomb interakciรณ: Bejelentkezรฉsi vagy navigรกciรณs mลฑveletek indรญtรกsa a click() metรณduson keresztรผl a megfelelล‘ WebElement hivatkozรกson.
  • ๐Ÿ“จ ลฐrlap bekรผldรฉse: Hasznรกld a submit() fรผggvรฉnyt egy ลฑrlap bรกrmely elemรฉn, รญgy a WebDriver automatikusan elkรผldi a szรผlล‘ ลฑrlap-kรผldรฉsi kezelล‘t.
  • ๐Ÿ›ก๏ธ Stabilitรกsi tipp: Adjon hozzรก implicit vagy explicit vรกrakozรกsokat a findElement() hรญvรกsok elล‘tt, hogy megakadรกlyozza a NoSuchElementException kivรฉtelt a dinamikusan betรถltรถtt oldalakon.

WebElement be Selenium

WebElement be Selenium

Az ลฑrlapok az alapvetล‘ webes elemek, amelyek informรกciรณkat rรถgzรญtenek a weboldal lรกtogatรณitรณl. A webes ลฑrlapok kรผlรถnbรถzล‘ grafikus felhasznรกlรณi felรผlet (GUI) vezรฉrlล‘ket tartalmaznak, pรฉldรกul szรถvegmezล‘ket, jelszรณmezล‘ket, jelรถlล‘nรฉgyzeteket, vรกlasztรณgombokat, legรถrdรผlล‘ menรผket รฉs fรกjlbeviteli lehetล‘sรฉgeket.

Ez az oktatรณanyag elmagyarรกzza, hogyan fรฉrhet hozzรก az egyes ลฑrlapelemekhez a kรถvetkezล‘ hasznรกlatรกval: Selenium WebDriver with Java. Selenium minden ลฑrlapelemet a WebElement objektumakรฉnt tartalmaz. API-t biztosรญt az elemek megkeresรฉsรฉhez รฉs a velรผk valรณ mลฑveletekhez, beleรฉrtve a szรถvegbevitelt, a gombokra kattintรกst รฉs az ลฑrlapok elkรผldรฉsรฉt. Az alรกbbi szakaszok az egyes ลฑrlapelemekhez elรฉrhetล‘ metรณdusokat ismertetik.

A WebElement bemutatรกsa FindElement,FindElements

A WebElement bemutatรกsa, findElement(), findElements()

Selenium A WebDriver egy egyszerลฑ ลฑrlapelemet reprezentรกl a kรถvetkezล‘ objektumakรฉnt: WebElem.

A WebDriver az ลฑrlapelemeket a webelem kรผlรถnbรถzล‘ tulajdonsรกgainak, pรฉldรกul az azonosรญtรณnak, nรฉvnek รฉs osztรกlynak a felhasznรกlรกsรกval azonosรญtja. XPath, Cรญmkenรฉv, CSS-szelektorok รฉs hivatkozรกsszรถveg.

A WebDriver a kรถvetkezล‘ kรฉt WebElement metรณdust biztosรญtja az elemek keresรฉsรฉhez:

  • findElement() โ€“ egyetlen webes elemet talรกl, รฉs azt WebElementkรฉnt adja vissza Selenium tรกrgy.
  • FindElements() โ€“ a helymeghatรกrozรณ feltรฉteleknek megfelelล‘ WebElement objektumok listรกjรกt adja vissza.

Az alรกbbi pรฉlda bemutatja, hogyan lehet egyetlen elemet, egy weboldalon talรกlhatรณ szรถvegmezล‘t WebElement objektumkรฉnt lekรฉrni a findElement() metรณdus hasznรกlatรกval. A tรถbb elem keresรฉsรฉre szolgรกlรณ findElements() metรณdust a kรฉsล‘bbi oktatรณanyagokban tรกrgyaljuk.

Step 1) Importรกlja a WebElement objektumok lรฉtrehozรกsรกhoz szรผksรฉges csomagot.

Step 2) A WebDriver osztรกlyon elรฉrhetล‘ findElement() metรณdus meghรญvรกsรกval kรฉrhetรผnk le egy WebElement objektumot, ahogy az alรกbb lรกthatรณ.

Selenium Szรถveg bevitele

A beviteli mezล‘k a kรถvetkezล‘ kรฉt tรญpus valamelyikรฉre utalnak:

  1. Szรถvegmezล‘k - Selenium beviteli szรถvegmezล‘k, amelyek beรญrt รฉrtรฉkeket fogadnak el, รฉs pontosan รบgy jelenรญtik meg azokat, ahogyan beรญrtรกk.
  2. Jelszรณmezล‘k โ€“ szรถvegmezล‘k, amelyek beรญrt รฉrtรฉkeket fogadnak el, de speciรกlis karakterek (รกltalรกban pontok vagy csillagok) sorozatakรฉnt maszkoljรกk azokat, hogy elrejtsรฉk a bizalmas bemenetet.

    Selenium Szรถveg bevitele

Helymeghatรกrozรณk

A findElement() metรณdus egyetlen paramรฉtert fogad el, ami egy lokรกtor, amely az elemre mutat. Kรผlรถnbรถzล‘ lokรกtorok, mint pรฉldรกul a By.id(), By.name(), By.xpath() รฉs By.cssSelector(), az oldalon talรกlhatรณ elemek tulajdonsรกgaik, pรฉldรกul id, name vagy path alapjรกn keresnek rรกjuk.

Hasznรกlhatsz olyan bล‘vรญtmรฉnyeket, mint a FirePath, hogy lekรฉrd az elemek azonosรญtรณjรกt, xpath-jรกt รฉs egyรฉb lokรกtorรฉrtรฉkeit.

A pรฉldaoldal segรญtsรฉgรฉvel https://demo.guru99.com/test/login.htmlAz alรกbbi kรณd az โ€žE-mail cรญmโ€ szรถvegmezล‘t az azonosรญtรณkeresล‘, a โ€žJelszรณโ€ mezล‘t pedig a nรฉvkeresล‘ segรญtsรฉgรฉvel keresi meg.

Helymeghatรกrozรณk

  1. Az e-mail szรถvegmezล‘ az azonosรญtรณ mellett talรกlhatรณ.
  2. A jelszรณ mezล‘ a nรฉv mellett talรกlhatรณ.

kรผldje be a kulcsokat Selenium

sendKeys() fรผggvรฉny Selenium egy metรณdus, amely szerkeszthetล‘ tartalom bevitelรฉre szolgรกl szรถveg- รฉs jelszรณmezล‘kbe a teszt vรฉgrehajtรกsa sorรกn. Ezeket a mezล‘ket lokรกtorok, pรฉldรกul nรฉv, osztรกly รฉs azonosรญtรณ azonosรญtjรกk. A metรณdus a WebElement objektumon รฉrhetล‘ el. A type metรณdussal ellentรฉtben a sendKeys() nem cserรฉli le a szรถvegmezล‘ben lรฉvล‘ meglรฉvล‘ szรถveget.

Hogyan รญrjunk be szรถveget Selenium

Szรถveg beรญrรกsรกhoz szรถvegmezล‘kbe รฉs jelszรณmezล‘kbe a sendKeys() metรณdus รฉrhetล‘ el a WebElementben a Selenium.

Ugyanazt a pรฉldรกt hasznรกlva https://demo.guru99.com/test/login.html, az alรกbbi kรณdrรฉszlet megkeresi a szรถvegmezล‘t รฉs a jelszรณ mezล‘t, รฉs beรญrja a szรถveget Selenium.

Szรถveg be Selenium

  1. Keresd meg az โ€žE-mail cรญmโ€ szรถvegmezล‘t az azonosรญtรณkeresล‘ segรญtsรฉgรฉvel.
  2. Keresd meg a โ€žJelszรณโ€ mezล‘t a nรฉvkeresล‘ segรญtsรฉgรฉvel.
  3. A gombbal รญrjon be szรถveget az โ€žE-mail cรญmโ€ mezล‘be Selenium sendKeys metรณdus.
  4. รrjon be egy jelszรณt a โ€žPasswordโ€ mezล‘be a sendKeys() metรณdussal.

ร‰rtรฉkek tรถrlรฉse a bevitelben Boxes

Az egyรฉrtelmลฑ() A metรณdus tรถrli a beviteli mezล‘ben talรกlhatรณ szรถveget. Ennek a metรณdusnak nincs szรผksรฉge paramรฉterre. Az alรกbbi kรณdrรฉszlet tรถrli a szรถveget az E-mail vagy Jelszรณ mezล‘kbล‘l.

ร‰rtรฉkek tรถrlรฉse a bevitelben Boxes

Selenium Kattintson a Gombokra

Az Selenium A click gombra a click() metรณdussal lehet hozzรกfรฉrni.

A fenti pรฉldรกban

  1. Keresd meg a Bejelentkezรฉs gombot.
  2. A hitelesรญtรฉshez kattintson a webhely bejelentkezรฉsi oldalรกn talรกlhatรณ โ€žBejelentkezรฉsโ€ gombra.

Selenium Kattintson a Gombokra

Selenium Bekรผldล‘ gombok

A kรผldรฉs gombok a teljes ลฑrlapot elkรผldik a szerverre. Meghรญvhatod a click() metรณdust a WebElement elemen, ahogy fentebb lรกthatรณ, vagy hasznรกlhatod a submit() metรณdust az ลฑrlap bรกrmely elemรฉn, vagy magรกn a kรผldรฉs gombon.

Selenium Bekรผldล‘ gombok

A submit() fรผggvรฉny hasznรกlatakor a WebDriver a DOM-ban keresi meg az elemhez tartozรณ ลฑrlapot, majd elindรญtja a submit fรผggvรฉnyt.

teljes Code

Itt a teljes mลฑkรถdล‘ kรณd.

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

Hibaelhรกrรญtรกs

Ha a NoSuchElementException() hibรกba รผtkรถzik az elemek keresรฉse sorรกn, akkor az elem nincs jelen az oldalon abban a pillanatban, amikor a WebDriver hozzรกfรฉrt hozzรก.

  1. Ellenล‘rizd รบjra a helymeghatรกrozรณdat a FirePath vagy a Chrome Elem vizsgรกlata opciรณjรกval.
  2. Ellenล‘rizd, hogy a kรณdban hasznรกlt รฉrtรฉk eltรฉr-e az elem FirePath-ban lรกthatรณ aktuรกlis รฉrtรฉkรฉtล‘l.
  3. Bizonyos elemek esetรฉben bizonyos attribรบtumok dinamikusak. Ha egy รฉrtรฉk dinamikusan vรกltozik, vรกlts a By.xpath() vagy a By.cssSelector() metรณdusra, amelyek megbรญzhatรณbbak, de valamivel รถsszetettebbek.
  4. Elล‘fordul, hogy a problรฉma egy vรกrakozรกsi รกllapot; a WebDriver vรฉgrehajthatja a kรณdot, mielล‘tt az oldal betรถltล‘dne.
  5. Adjon hozzรก egy vรกrakozรกst a findElement() elล‘tt implicit vagy explicit vรกrakozรกssal.

ร–sszegzรฉskรฉnt

  • Az alรกbbi tรกblรกzat รถsszefoglalja a fent tรกrgyalt egyes elemtรญpusok elรฉrรฉsรฉhez szรผksรฉges parancsokat.
Elem parancs Leรญrรกs
Bemenet Box sendKeys() ร‰rtรฉkek szรถvegmezล‘kbe valรณ bevitelรฉre szolgรกl.
egyรฉrtelmลฑ() Szรถvegmezล‘k aktuรกlis รฉrtรฉkรฉnek tรถrlรฉsรฉre szolgรกl.
Linkek kattints() A hivatkozรกsra kattintรกs รฉs az oldal betรถltรฉsรฉnek befejezล‘dรฉsรฉre valรณ vรกrakozรกs a kรถvetkezล‘ parancs vรฉgrehajtรกsa elล‘tt.
Kรผldรฉs gomb Bekรผldรฉs() Az ลฑrlap elkรผldรฉsรฉre szolgรกl a szรผlล‘ลฑrlap elkรผldรฉsi kezelล‘jรฉnek aktivรกlรกsรกval.
  • A WebDriver lehetล‘vรฉ teszi egynรฉl tรถbb lehetล‘sรฉg kivรกlasztรกsรกt tรถbb SELECT elemben.
  • A submit() metรณdust az ลฑrlap bรกrmely elemรฉn hasznรกlhatod. A WebDriver automatikusan elindรญtja az elemhez tartozรณ ลฑrlap submit fรผggvรฉnyรฉt.

GYIK

A findElement() fรผggvรฉny visszaadja az elsล‘ egyezล‘ WebElement elemet, รฉs NoSuchElementException kivรฉtelt dob, ha nincs ilyen. A findElements() fรผggvรฉny visszaadja az egyezล‘ WebElementek listรกjรกt, รฉs รผres listรกt ad vissza, ha egyetlen elem sem egyezik a lokรกtorral.

Egy webelem egy Selenium Egy burkolรณelem, amely olyan automatizรกlรกsi metรณdusokat tesz elรฉrhetล‘vรฉ, mint a sendKeys, a click รฉs a clear. A HTML elem az alapul szolgรกlรณ DOM csomรณpont. A WebDriver megkeresi a DOM csomรณpontot, รฉs egy WebElement referenciรกt ad vissza az interakciรณhoz.

Igen. A mestersรฉges intelligencia รกltal tรกmogatott eszkรถzรถk elemzik a DOM-ot, รฉs stabil lokรกtorokat javasolnak azonosรญtรณ, nรฉv, relatรญv XPath vagy CSS szelektorok hasznรกlatรกval. Csรถkkentik a lokรกtorok tรถrรฉkenysรฉgรฉt azรกltal, hogy egyedi attribรบtumkombinรกciรณkat รฉszlelnek, รฉs tartalรฉk megoldรกsokat javasolnak, amikor egy attribรบtum megvรกltozik.

Igen. A mestersรฉges intelligencia รกltal vezรฉrelt รถnjavรญtรณ lokรกtorok automatikusan รบjrakรถtik a webelemeket, amikor egy attribรบtum megvรกltozik. Ez csรถkkenti a ingatag hibรกkat, mรฉrsรฉkli a karbantartรกsi erล‘feszรญtรฉseket, รฉs megล‘rzi a... Selenium a csomagok stabilak a gyakori felhasznรกlรณi felรผlet-frissรญtรฉsek sorรกn az agilis szรกllรญtรกsi ciklusokban.

A gyakori WebElement kivรฉtelek kรถzรฉ tartozik a StaleElementReferenceException, az ElementNotInteractableException, az ElementClickInterceptedException, az InvalidElementStateException รฉs a TimeoutException. Mindegyik egy mรกsik DOM-, lรกthatรณsรกgi vagy szinkronizรกciรณs problรฉmรกt jelez, amelyet vรกrakozรกsokkal vagy frissรญtett elemhivatkozรกsokkal kell kezelni.

Foglald รถssze ezt a bejegyzรฉst a kรถvetkezล‘kรฉppen: