Obrazci so temeljni elementi spleta za sprejemanje informacij od obiskovalcev spletnega mesta. Spletni obrazci imajo različne elemente grafičnega uporabniškega vmesnika, kot so polja z besedilom, polja za gesla, potrditvena polja, izbirni gumbi, spustna menija, vnosi datotek itd.
Videli bomo, kako do teh različnih elementov obrazca dostopati s pomočjo spletnega gonilnika Selenium z Javo. Selen enkapsulira vsak element obrazca kot predmet WebElementa. Ponuja API za iskanje elementov in ukrepanje v zvezi z njimi, kot je vnašanje besedila v besedilna polja, klikanje gumbov itd. Videli bomo metode, ki so na voljo za dostop do posameznega elementa obrazca.
V tej vadnici bomo videli, kako prepoznati naslednje elemente obrazca
- Uvod v WebElement, findElement (), findElements ()
- Vnosno polje
- Vnos vrednosti v polja za vnos
- Brisanje vrednosti v vnosnih poljih
- Gumbi
- Gumbi za oddajo
- Popolna koda
- Odpravljanje težav
Uvod v WebElement, findElement (), findElements ()
Spletni gonilnik Selenium vključuje preprost element obrazca kot predmet WebElementa.
Obstajajo različne tehnike, s katerimi WebDriver prepozna elemente obrazca na podlagi različnih lastnosti spletnih elementov, kot so ID, ime, razred, XPath, ime oznake, izbirniki CSS, besedilo povezave itd.
Spletni gonilnik ponuja naslednja dva načina WebElement za iskanje elementov.
- findElement () - najde en sam spletni element in se vrne kot predmet WebElement Selenium.
- findElements () - vrne seznam predmetov WebElement, ki ustrezajo merilom lokatorja.
Oglejmo si delčke kode, da dobimo en element - besedilno polje na spletni strani kot predmet WebElementa z uporabo metode findElement (). V naslednjih vajah bomo obravnavali metodo findElements () za iskanje več elementov.
1. korak: Ta paket moramo uvoziti za ustvarjanje predmetov spletnih elementov
2. korak: Poklicati moramo metodo findElement (), ki je na voljo v razredu WebDriver, in pridobiti predmet WebElement.
Spodaj si oglejte, kako je to storjeno.
Vnosno polje
Polja za vnos se nanašajo na eno od teh dveh vrst:
- Besedilna polja - polja za vnos selena, ki sprejemajo vpisane vrednosti in jih prikazujejo takšne, kot so.
- Polja za gesla - besedilna polja, ki sprejemajo vnesene vrednosti, vendar jih maskirajo kot vrsto posebnih znakov (običajno pik in zvezdic), da se prepreči prikaz občutljivih vrednosti.
Lokatori
Metoda findElement () vzame en parameter, ki je lokator elementa. Različni lokatorji, kot so By.id (), By.name (), By.xpath (), By.CSSSelector () itd., Poiščejo elemente na strani z njihovimi lastnostmi, na primer id, ime ali pot, itd.
Vtičnike, kot je Fire path, lahko uporabite za pomoč pri pridobivanju id, xpath itd. Elementov.
Uporaba spodnjega primera spletnega mesta http://demo.guru99.com/test/login.html je koda za iskanje besedilnega polja »E-poštni naslov« z uporabo lokatorja id in polja »Geslo« z lokatorjem imen.
- Besedilno polje e-pošte nahaja Id
- Polje za geslo se nahaja po imenu
tipke v selenu
sendkeys () v programu Selenium je metoda, ki se uporablja za vnos vsebine, ki jo je mogoče urejati, v besedilo in geslo med izvajanjem preizkusa. Ta polja se identificirajo z lokatorji, kot so ime, razred, id itd. To je metoda, ki je na voljo v spletnem elementu. Za razliko od metode tipa metoda sendkeys () ne nadomesti obstoječega besedila v nobenem besedilnem polju.
Vnos vrednosti v polja za vnos
Če želite besedilo vnesti v besedilna polja in gesla, je sendKeys () metoda, ki je na voljo v WebElementu v seleniju.
Na istem primeru spletnega mesta http://demo.guru99.com/test/login.html, tukaj najdemo polja Besedilo in Geslo ter vnesemo besedilo v selenij.
- Poiščite besedilno polje »E-poštni naslov« z lokatorjem id.
- Poiščite polje "Geslo" z uporabo lokatorja imen
- Vnesite besedilo v "E-poštni naslov" z uporabo metode selenijskih tipk.
- Z metodo sendKeys () vnesite geslo v polje »Geslo«.
Brisanje vrednosti v vnosnih poljih
Metoda clear () se uporablja za brisanje besedila v vnosnem polju. Ta metoda ne potrebuje parametra . Delček kode spodaj bo izločil besedilo iz polj E-pošta ali Geslo
Gumbi
Do gumba za klik selena lahko dostopate z metodo click ().
V zgornjem primeru
- Poiščite gumb za prijavo
- Za prijavo na spletno stran kliknite gumb "Prijava" na prijavni strani spletnega mesta.
Gumbi za oddajo
Gumbi za oddajo se uporabljajo za pošiljanje celotnega obrazca na strežnik. Lahko uporabimo metodo click () na spletnem elementu kot običajni gumb, kot smo to storili zgoraj, ali pa uporabimo metodo submit () na katerem koli spletnem elementu v obrazcu ali na samem gumbu za oddajo.
Ko se uporablja submit (), bo WebDriver poiskal DOM, da bo vedel, kateri obliki pripada element, in nato sprožil svojo funkcijo oddaje.
Popolna koda
Tu je celotna delovna koda
uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.chrome.ChromeDriver;uvoz org.openqa.selenium. *;Obrazec za javni razred {public static void main (String [] args) {// deklaracija in instanciranje objektov / spremenljivkSystem.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Gonilnik WebDriver = nov ChromeDriver ();String baseUrl = "http://demo.guru99.com/test/login.html";driver.get (baseUrl);// Pridobite WebElement, ki ustreza e-poštnemu naslovu (TextField)WebElement email = driver.findElement (By.id ("email"));// Pridobite WebElement, ki ustreza polju za gesloGeslo WebElement = driver.findElement (By.name ("passwd"));email.sendKeys (" Ta e-poštni naslov je zaščiten proti smetenju. Če ga želite videti, omogočite Javascript.");password.sendKeys ("abcdefghlkjl");System.out.println ("Nabor besedilnih polj");// Brisanje vrednosti v besedilnem poljuemail.clear ();password.clear ();System.out.println ("Očiščeno besedilno polje");// Poiščite gumb za oddajoWebElement prijava = driver.findElement (By.id ("SubmitLogin"));// Uporaba metode klika za oddajo obrazcaemail.sendKeys (" Ta e-poštni naslov je zaščiten proti smetenju. Če ga želite videti, omogočite Javascript."); password.sendKeys ("abcdefghlkjl"); login.click (); System.out.println ("Prijava končana s klikom"); // z uporabo metode submit za oddajo obrazca. Predložitev uporabljena v polju geslo driver.get (baseUrl); driver.findElement (By.id ("email")). sendKeys (" Ta e-poštni naslov je zaščiten proti smetenju. Če ga želite videti, omogočite Javascript."); driver.findElement (By.name ("passwd")). sendKeys ("abcdefghlkjl"); driver.findElement (By.id ("SubmitLogin")). submit (); System.out.println ("Prijava končana s oddajo"); //driver.close (); }}
Odpravljanje težav
Če med iskanjem elementov naletite na NoSuchElementException (), to pomeni, da elementa na strani ni mogoče najti na mestu, kjer je spletni gonilnik dostopal do strani.
- Znova preverite svoj lokator s pomočjo Firepath ali Inspect Element v Chromu.
- Preverite, ali se vrednost, ki ste jo uporabili v kodi, razlikuje od vrednosti elementa v Firepathu zdaj.
- Nekatere lastnosti so dinamične za nekaj elementov. V primeru, da ugotovite, da je vrednost drugačna in se dinamično spreminja, razmislite o uporabi By.xpath () ali By.cssSelector (), ki sta bolj zanesljiva, a zapletena načina.
- Včasih je to lahko tudi težava s čakanjem, tj. Spletni gonilnik je izvršil vašo kodo, še preden se je stran popolnoma naložila itd.
- Dodajte čakanje pred findElement () z uporabo implicitnih ali eksplicitnih čakal.
Povzetek
- Spodnja tabela povzema ukaze za dostop do posamezne zgoraj obravnavane vrste elementov
Element | Ukaz | Opis |
---|---|---|
Vnosno polje | sendKeys () | uporablja se za vnos vrednosti v besedilna polja |
jasno () | uporablja se za brisanje besedilnih polj trenutne vrednosti | |
Povezave | kliknite () | uporablja se za klik na povezavo in počaka, da se nalaganje strani konča, preden nadaljujete z naslednjim ukazom. |
Gumb za oddajo | pošlji () |
- WebDriver omogoča izbiro več kot ene možnosti v več elementih SELECT.
- Način submit () lahko uporabite za kateri koli element v obrazcu. WebDriver bo samodejno sprožil funkcijo oddaje obrazca, kamor ta element spada.