Formuláře jsou základními webovými prvky pro příjem informací od návštěvníků webových stránek. Webové formuláře mají různé prvky grafického uživatelského rozhraní, jako jsou textová pole, pole hesla, zaškrtávací políčka, přepínače, rozbalovací nabídky, vstupy do souborů atd.
Uvidíme, jak přistupovat k těmto různým prvkům formuláře pomocí webového ovladače Selenium s Javou. Selen zapouzdřuje každý prvek formuláře jako objekt WebElement. Poskytuje API k vyhledání prvků a provádění akcí, jako je zadávání textu do textových polí, klepání na tlačítka atd. Uvidíme metody, které jsou k dispozici pro přístup ke každému prvku formuláře.
V tomto kurzu uvidíme, jak identifikovat následující prvky formuláře
- Úvod do WebElement, findElement (), findElements ()
- Vstupní pole
- Zadávání hodnot do vstupních polí
- Odstranění hodnot ve vstupních polích
- Tlačítka
- Odeslat tlačítka
- Kompletní kód
- Odstraňování problémů
Úvod do WebElement, findElement (), findElements ()
Selenový webový ovladač zapouzdřuje jednoduchý prvek formuláře jako objekt WebElement.
Existují různé techniky, kterými WebDriver identifikuje prvky formuláře na základě různých vlastností webových prvků, jako je ID, Název, Třída, XPath, Název tagu, Selektory CSS, Text odkazu atd.
Web Driver poskytuje následující dvě metody WebElement k vyhledání prvků.
- findElement () - najde jeden webový prvek a vrátí se jako objekt WebElement Selenium.
- findElements () - vrátí seznam objektů WebElement, které odpovídají kritériím lokátoru.
Podívejme se na fragmenty kódu, abychom získali jediný prvek - textové pole na webové stránce jako objekt WebElement pomocí metody findElement (). V následujících cvičeních se budeme zabývat metodou findElements () hledání více prvků.
Krok 1: Tento balíček musíme importovat, abychom mohli vytvářet objekty webových prvků
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á.
Vstupní pole
Vstupní pole odkazují na jeden z těchto dvou typů:
- Textová pole - selenová 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ý je lokátorem prvku. Různé lokátory jako By.id (), By.name (), By.xpath (), By.CSSSelector () atd. Vyhledají prvky na stránce pomocí jejich vlastností, jako je ID, název nebo cesta, atd.
Můžete použít pluginy jako Fire path, abyste získali pomoc se získáním id, xpath atd. Prvků.
Na níže uvedeném příkladu webu http://demo.guru99.com/test/login.html je kód k vyhledání textového pole „E-mailová adresa“ pomocí vyhledávače id a pole „Heslo“ pomocí vyhledávače názvů.
- Textové pole e-mailu je umístěno podle ID
- Pole hesla se nachází podle jména
sendkeys v selenu
sendkeys () v Selenium je metoda používaná k zadávání upravitelného obsahu do polí textu a hesla během provádění testu. Tato pole jsou identifikována pomocí lokátorů, jako je název, třída, id atd. Jedná se o metodu dostupnou na webovém prvku. Na rozdíl od metody typu metoda sendkeys () nenahrazuje existující text v žádném textovém poli.
Zadávání hodnot do vstupních polí
Chcete-li zadat text do textových polí a polí pro heslo, sendKeys () je metoda dostupná na WebElement v selenu.
Na stejném příkladu stránky http://demo.guru99.com/test/login.html zde najdeme pole Textové pole a Heslo a zadáme text do selenu.
- Vyhledejte textové pole „E-mailová adresa“ pomocí vyhledávače id.
- Vyhledejte pole „Heslo“ pomocí vyhledávače jmen
- Zadejte text do „E-mailové adresy“ pomocí metody Selenium sendkeys.
- Pomocí metody sendKeys () zadejte heslo do pole „Heslo“.
Odstranění hodnot ve vstupních polích
Metoda clear () 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
Tlačítka
Kliknutím na selenové tlačítko lze přistupovat pomocí metody click ().
Ve výše uvedeném příkladu
- Najděte tlačítko pro přihlášení
- Kliknutím na tlačítko „Přihlásit“ na přihlašovací stránce webu se přihlásíte na web.
Odeslat tlačítka
Tlačítka Odeslat se používají k odeslání celého formuláře na server. Můžeme buď použít metodu click () na webovém prvku jako normální tlačítko, jak jsme udělali výše, nebo použít metodu submit () na libovolném webovém prvku ve formuláři nebo na samotném tlačítku Odeslat.
Když se použije submit (), WebDriver vyhledá DOM, aby zjistil, do které formy prvek patří, a poté aktivuje 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. *;formulář veřejné třídy {public static void main (String [] args) {// deklarace a vytváření instancí objektů / proměnnýchSystem.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Ovladač WebDriver = nový ChromeDriver ();Řetězec baseUrl = "http://demo.guru99.com/test/login.html";driver.get (baseUrl);// Získejte WebElement odpovídající e-mailové adrese (TextField)WebElement email = driver.findElement (By.id ("email"));// Získejte WebElement odpovídající poli heslaHeslo WebElement = driver.findElement (By.name ("passwd"));email.sendKeys (" Tato e-mailová adresa je chráněna před spamboty. K jejímu zobrazení potřebujete mít povolený JavaScript.");heslo.sendKeys ("abcdefghlkjl");System.out.println ("Sada textových polí");// Odstranění hodnot v textovém poliemail.clear ();password.clear ();System.out.println ("Textové pole vymazáno");// Najít tlačítko OdeslatWebElement login = driver.findElement (By.id ("SubmitLogin"));// Použití metody kliknutí k odeslání formulářeemail.sendKeys (" Tato e-mailová adresa je chráněna před spamboty. Pro její zobrazení potřebujete mít povolený JavaScript."); heslo.sendKeys ("abcdefghlkjl"); login.click (); System.out.println ("Přihlášení dokončeno kliknutím"); // použití metody odeslání k odeslání formuláře. Odeslat použité v poli hesla driver.get (baseUrl); driver.findElement (By.id ("email")). sendKeys (" Tato e-mailová adresa je chráněna před spamboty. Pro její zobrazení potřebujete mít povolen JavaScript."); driver.findElement (By.name ("passwd")). sendKeys ("abcdefghlkjl"); driver.findElement (By.id ("SubmitLogin")). submit (); System.out.println ("Přihlášení dokončeno odesláním"); //driver.close (); }}
Odstraňování problémů
Pokud při hledání prvků narazíte na NoSuchElementException (), znamená to, že prvek není na stránce nalezen v okamžiku, kdy webový ovladač přistupoval ke stránce.
- Zkontrolujte svůj lokátor znovu pomocí Firepath nebo Inspect Element v prohlížeči Chrome.
- Zkontrolujte, zda se hodnota použitá v kódu liší od hodnoty pro prvek ve Firepath.
- Některé vlastnosti jsou dynamické pro několik prvků. V případě, že zjistíte, že hodnota je jiná a dynamicky se mění, zvažte použití By.xpath () nebo By.cssSelector (), což 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č spustil váš kód ještě před úplným načtením stránky atd.
- Přidejte čekání před findElement () pomocí implicitního nebo explicitního čekání.
souhrn
- Níže uvedená tabulka shrnuje příkazy pro přístup ke každému typu prvku diskutovanému výše
Živel | Příkaz | Popis |
---|---|---|
Vstupní pole | sendKeys () | slouží k zadávání hodnot do textových polí |
Průhledná() | slouží k vymazání textových polí z jeho aktuální hodnoty | |
Odkazy | klikněte () | slouží k kliknutí na odkaz a čekání na dokončení načítání stránky před pokračováním k dalšímu příkazu. |
Tlačítko Odeslat | 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 libovolném prvku ve formuláři. WebDriver automaticky spustí funkci odeslání formuláře, kam tento prvek patří.