Vormid on põhilised veebielemendid veebisaidi külastajatelt teabe saamiseks. Veebivormidel on erinevad GUI elemendid, näiteks tekstikastid, parooliväljad, märkeruudud, raadionupud, rippmenüüd, failisisendid jne.
Näeme, kuidas pääseda nendele erinevatele vormielementidele juurde, kasutades Java-ga veebi Selenium draiverit. Seleen kapseldab kõik vormielemendid WebElementi objektiks. See pakub API-d elementide leidmiseks ja nendega toimimiseks, näiteks teksti sisestamine tekstikastidesse, klõpsamine nuppudel jne. Näeme meetodeid, mis on saadaval igale vormielemendile juurdepääsemiseks.
Selles õpetuses näeme, kuidas tuvastada järgmisi vormielemente
- Sissejuhatus WebElementi, findElement (), findElements ()
- Sisendkast
- Väärtuste sisestamine sisestuskastidesse
- Väärtuste kustutamine sisestuskastides
- Nööbid
- Esita nupud
- Täielik kood
- Tõrkeotsing
Sissejuhatus WebElementi, findElement (), findElements ()
Seleeni veebidraiver kapseldab lihtsa vormielemendi WebElementi objektiks .
On erinevaid tehnikaid, mille abil WebDriver tuvastab vormielemendid veebielementide erinevate omaduste põhjal, nagu ID, nimi, klass, XPath, sildi nimi, CSS-i valijad, lingitekst jne.
Veebidraiver pakub elementide leidmiseks kaks järgmist WebElementi meetodit.
- findElement () - leiab ühe veebielemendi ja naaseb WebElement Selenium objektina.
- findElements () - tagastab loendi WebElementi objektidest, mis vastavad lokaatori kriteeriumidele.
Vaatame koodijuppe, et saada üks element - tekstivälja veebilehel WebElementi objektina, kasutades meetodit findElement (). Käsitleme meetodit findElements () mitme elemendi leidmiseks järgmistes õpetustes.
1. samm: Veebielementide objektide loomiseks peame selle paketi importima
2. samm: peame kutsuma WebDriveri klassis saada oleva meetodi findElement () ja hankima WebElementi objekti.
Vaadake allpool, kuidas seda teha.
Sisendkast
Sisestuskastid viitavad ühele neist kahest tüübist:
- Tekstiväljad - seleeni sisendtekstikastid, mis aktsepteerivad sisestatud väärtusi ja näitavad neid sellistena, nagu nad on.
- Parooliväljad - tekstiväljad, mis aktsepteerivad sisestatud väärtusi, kuid varjavad neid erimärkide (tavaliselt punktide ja tärnidena) reana, et vältida tundlike väärtuste kuvamist.
Lokaatorid
Meetodil findElement () võetakse üks parameeter, mis on elemendi lokator. Erinevad lokaatorid, nagu By.id (), By.name (), By.xpath (), By.CSSSelector () jne. Leiavad lehel olevad elemendid nende omaduste abil, näiteks "ID, nimi või tee, jne.
Elementide id, xpath jms hankimiseks abi saamiseks võite kasutada selliseid pluginaid nagu Fire path.
Allpool toodud näitesaidi http://demo.guru99.com/test/login.html kasutamine on kood tekstivälja "E-posti aadress" leidmiseks, kasutades ID-lokaatorit ja välja "Parool", kasutades nime lokaatorit.
- E-posti tekstiväli asub ID järgi
- Parooli väli asub nime järgi
valimisvõtmed seleenis
seleenis olevad sendkeys () on meetod, mida kasutatakse testi täitmisel teksti ja parooli väljadele redigeeritava sisu sisestamiseks. Need väljad tuvastatakse lokaatorite abil, näiteks nimi, klass, ID jne. See on veebielemendis saadaval olev meetod. Erinevalt tüübimeetodist ei asenda sendkeys () meetod üheski tekstikastis olemasolevat teksti.
Väärtuste sisestamine sisestuskastidesse
Teksti sisestamiseks tekstiväljadesse ja parooliväljadesse on seleenis WebElementis saadaval sendKeys ().
Kasutades sama saidi http://demo.guru99.com/test/login.html näidet, leiame siit väljad Tekst ja Väli Parool ning sisestame seleeni teksti.
- Leidke ID-lokaatori abil tekstiväli "E-posti aadress".
- Nimeotsija abil leidke väli "Parool"
- Sisestage tekst "E-posti aadress", kasutades seleen-võtmemeetodeid.
- Sisestage parool väljale "Parool", kasutades meetodit sendKeys ().
Väärtuste kustutamine sisestuskastides
Selge () meetodit kasutatakse kustutada teksti sisend kasti. See meetod ei vaja parameetrit . Allpool olev koodilõik kustutab teksti väljadelt E-post või Parool
Nööbid
Klõpsamisnupule Selenium pääseb juurde meetodiga click ().
Ülaltoodud näites
- Leidke sisselogimiseks nupp
- Saidile sisselogimiseks klõpsake saidi sisselogimislehel nuppu "Sisselogimine".
Esita nupud
Esitusnuppe kasutatakse kogu vormi serverisse saatmiseks. Me võime kas kasutada elementi click () veebielemendis nagu tavalist nuppu, nagu oleme teinud eespool, või kasutada meetodit submit () mis tahes vormis oleval veebielemendil või nupul Esita ise.
Esitamise () kasutamise korral otsib WebDriver DOM-i, et teada saada, millisesse vormi element kuulub, ja käivitab seejärel selle esitusfunktsiooni.
Täielik kood
Siin on täielik töökood
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium. *;avaliku klassi vorm {public staatiline void main (String [] args) {// objektide / muutujate deklaratsioon ja eksemplarSystem.setProperty ("veebidraiver.chrome.driver", "G: \\ chromedriver.exe");WebDriveri draiver = uus ChromeDriver ();String baseUrl = "http://demo.guru99.com/test/login.html";draiver.get (baseUrl);// Hankige veebiaadress, mis vastab e-posti aadressile (TextField)WebElementi e-post = driver.findElement (By.id ("e-post"));// Hankige väljale Parool vastav WebElementWebElementi parool = driver.findElement (By.name ("passwd"));email.sendKeys (" See e-posti aadress on spämmirobotite eest kaitstud. Selle vaatamiseks peate lubama JavaScripti.");parool.sendKeys ("abcdefghlkjl");System.out.println ("Tekstivälja komplekt");// Väärtuste kustutamine tekstikastisemail.clear ();parool.selge ();System.out.println ("Tekstiväli on kustutatud");// Leidke nupp EsitaWebElementi sisselogimine = driver.findElement (By.id ("SubmitLogin"));// Vormi saatmiseks klikimeetodi kasutamineemail.sendKeys (" See e-posti aadress on spämmirobotite eest kaitstud. Selle vaatamiseks peate lubama JavaScripti."); parool.sendKeys ("abcdefghlkjl"); login.click (); System.out.println ("Klõpsuga sisselogimine on tehtud"); // kasutades vormi esitamiseks meetodit Esita. Esita kasutatakse parooliväljal driver.get (baseUrl); driver.findElement (By.id ("email")). sendKeys (" See e-posti aadress on spämmirobotite eest kaitstud. Selle vaatamiseks peate lubama JavaScripti."); draiver.findElement (By.name ("passwd")). sendKeys ("abcdefghlkjl"); driver.findElement (By.id ("SubmitLogin")). esita (); System.out.println ("Sisselogimine on koos saatmisega tehtud"); //driver.close (); }}
Tõrkeotsing
Kui kohtate elementide otsimisel funktsiooni NoSuchElementException (), tähendab see, et elementi ei leitud lehelt selles punktis, kuhu veebidraiver lehele juurde pääses.
- Kontrollige oma lokaatorit uuesti, kasutades Firefoxi Firepathi või Inspect Elementi.
- Kontrollige, kas koodis kasutatud väärtus erineb nüüd Firepathi elemendi väärtusest.
- Mõned omadused on dünaamilised mõne elemendi jaoks. Juhul kui leiate, et väärtus on erinev ja muutub dünaamiliselt, kaaluge usaldusväärsemaid, kuid keerukamaid viise By.xpath () või By.cssSelector ().
- Mõnikord võib see olla ka ootamise probleem, st veebidraiver käivitas teie koodi juba enne lehe täielikku laadimist jne.
- Lisage kaudne või selgesõnaline ootamine enne findElement () -i ootamist.
Kokkuvõte
- Allpool olev tabel võtab kokku käsud igale eespool käsitletud elemendi tüübile juurdepääsemiseks
Element | Käsk | Kirjeldus |
---|---|---|
Sisendkast | sendKeys () | kasutatakse väärtuste sisestamiseks tekstikastidesse |
selge () | kasutatakse tekstikastide praeguse väärtuse kustutamiseks | |
Lingid | klõpsake () | enne järgmise käsuga jätkamist kasutati lingil klõpsamiseks ja lehe laadimise lõpuleviimise ootamiseks. |
Esita nupp | Esita() |
- WebDriver võimaldab valida mitu elementi SELECT mitu elementi.
- Meetodit submite () saate kasutada vormi mis tahes elemendis. WebDriver käivitab automaatselt vormi esitamise funktsiooni, kuhu see element kuulub.