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

Úvod do WebElement FindElement, FindElements

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ů:

  1. Textová pole- Selenium vstupní textová pole, která přijímají zadané hodnoty a zobrazují je tak, jak jsou.
  2. 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.

    Selenium Vstupní text

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.

Lokátory

  1. Textové pole e-mailu je umístěno podle ID
  2. 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.

Text v Selenium

  1. Najděte textové pole „E-mailová adresa“ pomocí id lokátoru.
  2. Najděte pole „Heslo“ pomocí vyhledávače jmen
  3. Zadejte text do „E-mailové adresy“ pomocí Selenium metoda sendkeys.
  4. 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

Mazání hodnot ve vstupu Boxes

Selenium Klepněte na tlačítko

Jedno Selenium click je přístupné pomocí metody click().

V příkladu výše

  1. Najděte tlačítko pro přihlášení
  2. Kliknutím na tlačítko „Přihlásit se“ na přihlašovací stránce webu se přihlaste na web.

Selenium Klepněte na tlačítko

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.

Selenium Tlačítka 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.

  1. Znovu zkontrolujte svůj lokátor pomocí Firepath nebo Inspect Element v Chrome.
  2. Zkontrolujte, zda se hodnota, kterou jste použili v kódu, liší od hodnoty pro prvek ve Firepath nyní.
  3. 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.
  4. 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.
  5. 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ří.