WebElement v Selenium
WebElement v Selenium
Formulรกลe jsou zรกkladnรญmi prvky webu pro pลรญjem informacรญ od nรกvลกtฤvnรญkลฏ webu. Webovรฉ formulรกลe majรญ rลฏznรฉ prvky GUI, jako jsou textovรก pole, pole hesla, zaลกkrtรกvacรญ polรญฤka, pลepรญnaฤe, rozevรญracรญ seznamy, vstupy do souborลฏ atd.
Uvidรญme, jak pomocรญ tฤchto rลฏznรฝch prvkลฏ formulรกลe zรญskat pลรญstup Selenium Webovรฝ ovladaฤ s Java. Selenium zapouzdลรญ kaลพdรฝ prvek formulรกลe jako objekt WebElement. Poskytuje API pro vyhledรกnรญ prvkลฏ a provรกdฤnรญ akcรญ s nimi, jako je zadรกvรกnรญ textu do textovรฝch polรญ, klikรกnรญ na tlaฤรญtka atd. Uvidรญme metody, kterรฉ jsou k dispozici pro pลรญstup ke kaลพdรฉmu prvku formulรกลe.
รvod do WebElement, findElement(), findElements()
Selenium Web Driver zapouzdลuje jednoduchรฝ formulรกลovรฝ prvek jako objekt WebElement.
Existujรญ rลฏznรฉ techniky, kterรฝmi WebDriver identifikuje prvky formulรกลe na zรกkladฤ rลฏznรฝch vlastnostรญ prvkลฏ webu, jako je ID, nรกzev, tลรญda, XPath, tagname, selektory CSS, text odkazu atd.
Web Driver poskytuje nรกsledujรญcรญ dvฤ metody WebElement k nalezenรญ prvkลฏ.
- findElement() โ najde jeden webovรฝ prvek a vrรกtรญ se jako WebElement Selenium objekt.
- findElements() โ vrรกtรญ seznam objektลฏ WebElement vyhovujรญcรญch kritรฉriรญm lokรกtoru.
Podรญvejme se na รบryvky kรณdu, abychom zรญskali jeden prvek โ Textovรฉ pole na webovรฉ strรกnce jako objekt WebElement pomocรญ metody findElement(). Metodu findElements() pro hledรกnรญ vรญce prvkลฏ probereme v nรกsledujรญcรญch vรฝukovรฝch programech.
Krok 1) Tento balรญฤek potลebujeme importovat, abychom mohli vytvรกลet objekty Web Elements
Krok 2) Musรญme zavolat metodu findElement() dostupnou ve tลรญdฤ WebDriver a zรญskat objekt WebElement.
Nรญลพe se podรญvejte, jak se to dฤlรก.
Selenium Vstupnรญ text
Vstupnรญ pole se tรฝkajรญ jednoho z tฤchto dvou typลฏ:
- Textovรก pole- Selenium vstupnรญ textovรก pole, kterรก pลijรญmajรญ zadanรฉ hodnoty a zobrazujรญ je tak, jak jsou.
- Pole heslaโ textovรก pole, kterรก pลijรญmajรญ zadanรฉ hodnoty, ale maskujรญ je jako ลadu speciรกlnรญch znakลฏ (obvykle teฤky a hvฤzdiฤky), aby se zabrรกnilo zobrazenรญ citlivรฝch hodnot.
Lokรกtory
Metoda findElement() pลebรญrรก jeden parametr, kterรฝm je lokรกtor prvku. Rลฏznรฉ lokรกtory jako By.id(), By.name(), By.xpath(), By.CSSSelector() atd. vyhledรกvajรญ prvky na strรกnce pomocรญ jejich vlastnostรญ, jako je โโโ id, nรกzev nebo cesta atd.
Mลฏลพete pouลพรญt pluginy, jako je Fire path, abyste zรญskali pomoc se zรญskรกnรญm id, xpath atd. prvkลฏ.
Pomocรญ vzorovรฉho webu https://demo.guru99.com/test/login.html nรญลพe je uveden kรณd pro vyhledรกnรญ textovรฉho pole โE-mailovรก adresaโ pomocรญ id lokรกtoru a pole โHesloโ pomocรญ vyhledรกvaฤe jmen.
- Textovรฉ pole e-mailu je umรญstฤno podle ID
- Pole hesla je umรญstฤno podle jmรฉna
sendkeys in Selenium
sendkeys() v Selenium je metoda pouลพรญvanรก k zadรกvรกnรญ upravitelnรฉho obsahu do textovรฝch polรญ a polรญ pro heslo bฤhem provรกdฤnรญ testu. Tato pole jsou identifikovรกna pomocรญ lokรกtorลฏ, jako je jmรฉno, tลรญda, id atd. Je to metoda dostupnรก na webovรฉm prvku. Na rozdรญl od metody type nenahrazuje metoda sendkeys() existujรญcรญ text v ลพรกdnรฉm textovรฉm poli.
Jak zadat text Selenium
Chcete-li zadat text do textovรฝch polรญ a polรญ hesla, sendKeys() je metoda dostupnรก na WebElement v Selenium.
Pomocรญ stejnรฉho pลรญkladu https://demo.guru99.com/test/login.html Zde je nรกvod, jak najdeme pole Text a pole Heslo a zadรกme text Selenium.
- Najdฤte textovรฉ pole โE-mailovรก adresaโ pomocรญ id lokรกtoru.
- Najdฤte pole โHesloโ pomocรญ vyhledรกvaฤe jmen
- Zadejte text do โE-mailovรฉ adresyโ pomocรญ Selenium metoda sendkeys.
- Pomocรญ metody sendKeys() zadejte heslo do pole โHesloโ.
Mazรกnรญ hodnot ve vstupu Boxes
Jedno Prลฏhlednรก() metoda se pouลพรญvรก k odstranฤnรญ textu ve vstupnรญm poli. Tato metoda nepotลebuje parametr. Fragment kรณdu nรญลพe vymaลพe text z polรญ E-mail nebo Heslo
Selenium Klepnฤte na tlaฤรญtko
Jedno Selenium click je pลรญstupnรฉ pomocรญ metody click().
V pลรญkladu vรฝลกe
- Najdฤte tlaฤรญtko pro pลihlรกลกenรญ
- Kliknutรญm na tlaฤรญtko โPลihlรกsit seโ na pลihlaลกovacรญ strรกnce webu se pลihlaste na web.
Selenium Tlaฤรญtka Odeslat
Tlaฤรญtka Odeslat se pouลพรญvajรญ k odeslรกnรญ celรฉho formulรกลe na server. Mลฏลพeme buฤ pouลพรญt metodu click () na webovรฝ prvek jako normรกlnรญ tlaฤรญtko, jak jsme to udฤlali vรฝลกe, nebo pouลพรญt metodu submit () na jakรฝkoli webovรฝ prvek ve formulรกลi nebo na samotnรฉ tlaฤรญtko Odeslat.
Kdyลพ se pouลพije submit(), WebDriver vyhledรก DOM, aby zjistil, do jakรฉ formy prvek patลรญ, a pak spustรญ jeho funkci odeslรกnรญ.
Kompletnรญ Code
Zde je kompletnรญ pracovnรญ 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();
}
}
Odstraลovรกnรญ poruch
Pokud se pลi hledรกnรญ prvkลฏ setkรกte s NoSuchElementException(), znamenรก to, ลพe prvek nebyl na strรกnce nalezen v okamลพiku, kdy webovรฝ ovladaฤ pลistupoval ke strรกnce.
- Znovu zkontrolujte svลฏj lokรกtor pomocรญ Firepath nebo Inspect Element v Chrome.
- Zkontrolujte, zda se hodnota, kterou jste pouลพili v kรณdu, liลกรญ od hodnoty pro prvek ve Firepath nynรญ.
- Nฤkterรฉ vlastnosti jsou dynamickรฉ pro nฤkolik prvkลฏ. V pลรญpadฤ, ลพe zjistรญte, ลพe se hodnota liลกรญ a dynamicky se mฤnรญ, zvaลพte pouลพitรญ By.xpath() nebo By.cssSelector(), kterรฉ jsou spolehlivฤjลกรญ, ale sloลพitฤjลกรญ zpลฏsoby.
- Nฤkdy to mลฏลพe bรฝt takรฉ problรฉm s ฤekรกnรญm, tj. webovรฝ ovladaฤ provedl vรกลก kรณd jeลกtฤ pลed รบplnรฝm naฤtenรญm strรกnky atd.
- Pลidejte ฤekรกnรญ pลed findElement() pomocรญ implicitnรญch nebo explicitnรญch ฤekรกnรญ.
Shrnutรญ
- Nรญลพe uvedenรก tabulka shrnuje pลรญkazy pro pลรญstup ke kaลพdรฉmu typu prvku diskutovanรฉmu vรฝลกe
| Prvek | Pลรญkaz | Description |
|---|---|---|
| Vstup Box | sendKeys () | slouลพรญ k zadรกvรกnรญ hodnot do textovรฝch polรญ |
| Prลฏhlednรก() | slouลพรญ k vymazรกnรญ aktuรกlnรญ hodnoty textovรฝch polรญ | |
| klikni() | slouลพรญ ke kliknutรญ na odkaz a ฤekรกnรญ na dokonฤenรญ naฤรญtรกnรญ strรกnky, neลพ se pลistoupรญ k dalลกรญmu pลรญkazu. | |
| Vloลพenรญ tlaฤรญtko | Pลedloลพit() |
- WebDriver umoลพลuje vรฝbฤr vรญce neลพ jednรฉ moลพnosti ve vรญce prvku SELECT.
- Metodu submit() mลฏลพete pouลพรญt na jakรฝkoli prvek ve formulรกลi. WebDriver automaticky spustรญ funkci odeslรกnรญ formulรกลe, kam danรฝ prvek patลรญ.






