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รญ 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.

  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ล™รญ.

Shrลˆte tento pล™รญspฤ›vek takto: