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í kód
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ří.