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.