Element sieciowy w Selenium

Element sieciowy w Selenium

Formularze sฤ… podstawowymi elementami sieciowymi do odbierania informacji od odwiedzajฤ…cych witrynฤ™. Formularze sieciowe majฤ… rรณลผne elementy GUI, takie jak pola tekstowe, pola haseล‚, pola wyboru, przyciski radiowe, listy rozwijane, pola wprowadzania plikรณw itp.

Zobaczymy, jak uzyskaฤ‡ dostฤ™p do tych rรณลผnych elementรณw formularza za pomocฤ… Selenium Sterownik sieciowy z Java. Selenium hermetyzuje kaลผdy element formularza jako obiekt WebElement. Zawiera API umoลผliwiajฤ…ce wyszukiwanie elementรณw i podejmowanie na nich dziaล‚aล„, takich jak wpisywanie tekstu do pรณl tekstowych, klikanie przyciskรณw itd. Przyjrzymy siฤ™ metodom dostฤ™pnym do uzyskiwania dostฤ™pu do kaลผdego elementu formularza.

Wprowadzenie do WebElement, findElement(), findElements()

Selenium Sterownik sieciowy hermetyzuje prosty element formularza jako obiekt Element sieciowy.

Istniejฤ… rรณลผne techniki, za pomocฤ… ktรณrych WebDriver identyfikuje elementy formularza w oparciu o rรณลผne wล‚aล›ciwoล›ci elementรณw sieciowych, takie jak identyfikator, nazwa, klasa, XPath, zmienna, selektory CSS, tekst ล‚ฤ…cza itp.

Web Driver udostฤ™pnia dwie metody WebElement umoลผliwiajฤ…ce znalezienie elementรณw.

  • znajdลบElement() โ€“ znajduje pojedynczy element sieciowy i zwraca jako element WebElement Selenium obiekt.
  • findElements() โ€“ zwraca listฤ™ obiektรณw WebElement speล‚niajฤ…cych kryteria lokalizatora.

Zobaczmy fragmenty kodu, aby uzyskaฤ‡ pojedynczy element โ€“ โ€‹โ€‹pole tekstowe na stronie internetowej jako obiekt WebElement przy uลผyciu metody findElement(). Metodฤ™ findElements() sล‚uลผฤ…cฤ… do wyszukiwania wielu elementรณw omรณwimy w kolejnych tutorialach.

Krok 1) Musimy zaimportowaฤ‡ ten pakiet, aby utworzyฤ‡ obiekty Web Elements

Wprowadzenie do WebElement FindElement, FindElements

Krok 2) Musimy wywoล‚aฤ‡ metodฤ™ findElement() dostฤ™pnฤ… w klasie WebDriver i pobraฤ‡ obiekt WebElement.

Poniลผej moลผesz zobaczyฤ‡, jak to siฤ™ robi.

Selenium Wprowadลบ tekst

Pola wprowadzania danych mogฤ… byฤ‡ jednym z dwรณch typรณw:

  1. Pola tekstowe- Selenium pola tekstowe, ktรณre akceptujฤ… wprowadzane wartoล›ci i wyล›wietlajฤ… je w takiej postaci, w jakiej sฤ….
  2. Pola hasล‚aโ€“ pola tekstowe, ktรณre akceptujฤ… wartoล›ci wprowadzane rฤ™cznie, ale maskujฤ… je jako seriฤ™ znakรณw specjalnych (najczฤ™ล›ciej kropek i gwiazdek), aby uniknฤ…ฤ‡ wyล›wietlania poufnych wartoล›ci.

    Selenium Wprowadลบ tekst

Lokalizatory

Metoda findElement() przyjmuje jeden parametr bฤ™dฤ…cy lokalizatorem elementu. Rรณลผne lokalizatory, takie jak By.id(), By.name(), By.xpath(), By.CSSSelector() itp. lokalizujฤ… elementy na stronie przy uลผyciu ich wล‚aล›ciwoล›ci, takich jak identyfikator, nazwa lub ล›cieลผka itp.

Moลผesz uลผyฤ‡ wtyczek takich jak Fire path, aby uzyskaฤ‡ pomoc w uzyskaniu identyfikatora, ล›cieลผki xpath itp. elementรณw.

Korzystajฤ…c z przykล‚adowej witryny https://demo.guru99.com/test/login.html Poniลผej znajduje siฤ™ kod umoลผliwiajฤ…cy znalezienie pola tekstowego โ€žAdres e-mailโ€ za pomocฤ… lokalizatora identyfikatora i pola โ€žHasล‚oโ€ za pomocฤ… lokalizatora nazwy.

Lokalizatory

  1. Pole tekstowe e-maila znajduje siฤ™ wedล‚ug identyfikatora
  2. Pole hasล‚a znajduje siฤ™ przy nazwie

wyล›lij klucze Selenium

sendkeys() w Selenium jest metodฤ… uลผywanฤ… do wprowadzania edytowalnej zawartoล›ci w polach tekstowych i hasล‚owych podczas wykonywania testu. Pola te sฤ… identyfikowane za pomocฤ… lokalizatorรณw, takich jak nazwa, klasa, identyfikator itp. Jest to metoda dostฤ™pna w elemencie sieciowym. W przeciwieล„stwie do metody type, metoda sendkeys() nie zastฤ™puje istniejฤ…cego tekstu w ลผadnym polu tekstowym.

Jak wprowadziฤ‡ tekst w Selenium

Aby wprowadziฤ‡ tekst w polach tekstowych i polach haseล‚, metoda sendKeys() jest dostฤ™pna w elemencie WebElement w Selenium.

Uลผywajฤ…c tego samego przykล‚adu https://demo.guru99.com/test/login.html site, oto jak znaleลบฤ‡ pole tekstowe i pola Hasล‚o oraz wprowadziฤ‡ tekst Selenium.

Tekst w Selenium

  1. Znajdลบ pole tekstowe โ€žAdres e-mailโ€ za pomocฤ… lokalizatora identyfikatorรณw.
  2. Znajdลบ pole โ€žHasล‚oโ€ za pomocฤ… lokalizatora nazw
  3. Wprowadลบ tekst w polu โ€žAdres e-mailโ€ za pomocฤ… Selenium metoda sendkeys.
  4. Wprowadลบ hasล‚o w polu โ€žHasล‚oโ€ za pomocฤ… metody sendKeys().

Usuwanie wartoล›ci wejล›ciowych Boxes

jasny() Metoda ta sล‚uลผy do usuwania tekstu z pola wprowadzania. Ta metoda nie wymaga parametru. Poniลผszy fragment kodu wyczyล›ci tekst z pรณl E-mail lub Hasล‚o

Usuwanie wartoล›ci wejล›ciowych Boxes

Selenium Kliknij Przyciski

Selenium Dostฤ™p do przycisku klikniฤ™cia moลผna uzyskaฤ‡ za pomocฤ… metody click().

W powyลผszym przykล‚adzie

  1. Znajdลบ przycisk, aby siฤ™ zalogowaฤ‡
  2. Kliknij przycisk โ€žZaloguj siฤ™โ€ na stronie logowania, aby zalogowaฤ‡ siฤ™ do witryny.

Selenium Kliknij Przyciski

Selenium Przyciski Przeล›lij

Przyciski Wyล›lij sล‚uลผฤ… do przesล‚ania caล‚ego formularza na serwer. Moลผemy uลผyฤ‡ metody click () na elemencie internetowym jak w przypadku zwykล‚ego przycisku, jak zrobiliล›my powyลผej, lub uลผyฤ‡ metody przesyล‚ania () na dowolnym elemencie internetowym w formularzu lub na samym przycisku przesyล‚ania.

Selenium Przyciski Przeล›lij

Gdy uลผywana jest funkcja przesyล‚ania, WebDriver sprawdzi DOM, aby dowiedzieฤ‡ siฤ™, do ktรณrej formy naleลผy element, a nastฤ™pnie uruchomi funkcjฤ™ przesyล‚ania.

Kompletny kod

Oto kompletny dziaล‚ajฤ…cy kod

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();		
        		
    }		
}

Rozwiฤ…zywanie problemรณw

Jeล›li podczas wyszukiwania elementรณw napotkasz funkcjฤ™ NoSuchElementException(), oznacza to, ลผe elementu nie znaleziono na stronie w momencie, gdy sterownik sieciowy uzyskaล‚ dostฤ™p do strony.

  1. Sprawdลบ ponownie swรณj lokalizator za pomocฤ… Firepath lub Inspect Element w przeglฤ…darce Chrome.
  2. Sprawdลบ, czy wartoล›ฤ‡ uลผyta w kodzie rรณลผni siฤ™ teraz od wartoล›ci elementu w Firepath.
  3. Niektรณre wล‚aล›ciwoล›ci sฤ… dynamiczne dla kilku elementรณw. Jeล›li okaลผe siฤ™, ลผe wartoล›ฤ‡ jest inna i zmienia siฤ™ dynamicznie, rozwaลผ uลผycie By.xpath() lub By.cssSelector(), ktรณre sฤ… bardziej niezawodnymi, ale zล‚oลผonymi metodami.
  4. Czasami moลผe to byฤ‡ rรณwnieลผ problem zwiฤ…zany z oczekiwaniem, np. sterownik sieciowy wykonaล‚ kod jeszcze przed caล‚kowitym zaล‚adowaniem strony itp.
  5. Dodaj oczekiwanie przed findElement() przy uลผyciu niejawnych lub jawnych oczekiwaล„.

Podsumowanie

  • Poniลผsza tabela podsumowuje polecenia umoลผliwiajฤ…ce dostฤ™p do kaลผdego typu elementu omรณwionego powyลผej
Element Command OPIS
Wkล‚ad Box sendKeys () sล‚uลผy do wprowadzania wartoล›ci do pรณl tekstowych
jasny() sล‚uลผy do czyszczenia pรณl tekstowych z ich bieลผฤ…cej wartoล›ci
Linki Kliknij() uลผywany do klikniฤ™cia ล‚ฤ…cza i zaczekania na zakoล„czenie ล‚adowania strony przed przejล›ciem do nastฤ™pnego polecenia.
Umieล›ฤ‡ przycisk skล‚adaฤ‡()
  • WebDriver umoลผliwia wybรณr wiฤ™cej niลผ jednej opcji w wielokrotnym elemencie SELECT.
  • Metodฤ™ Submit() moลผesz zastosowaฤ‡ na dowolnym elemencie formularza. WebDriver automatycznie uruchomi funkcjฤ™ przesyล‚ania formularza, do ktรณrego naleลผy ten element.

Podsumuj ten post nastฤ™pujฤ…co: