Formularze to podstawowe elementy sieci służące do otrzymywania informacji od odwiedzających witrynę. Formularze internetowe mają różne elementy GUI, takie jak pola tekstowe, pola hasła, pola wyboru, przyciski radiowe, listy rozwijane, dane wejściowe do plików itp.
Zobaczymy, jak uzyskać dostęp do tych różnych elementów formularza za pomocą sterownika Selenium Web Driver z Javą. Selen hermetyzuje każdy element formularza jako obiekt WebElement. Zapewnia API do wyszukiwania elementów i wykonywania na nich działań, takich jak wprowadzanie tekstu do pól tekstowych, klikanie przycisków itp. Zobaczymy metody, które są dostępne, aby uzyskać dostęp do każdego elementu formularza.
W tym samouczku zobaczymy, jak zidentyfikować następujące elementy formularza
- Wprowadzenie do WebElement, findElement (), findElements ()
- Pole wprowadzania
- Wprowadzanie wartości w polach wprowadzania
- Usuwanie wartości w polach wprowadzania
- guziki
- Przyciski przesyłania
- Kompletny kod
- Rozwiązywanie problemów
Wprowadzenie do WebElement, findElement (), findElements ()
Selenium Web Driver hermetyzuje prosty element formularza jako obiekt WebElement.
Istnieją różne techniki, za pomocą których WebDriver identyfikuje elementy formularza na podstawie różnych właściwości elementów sieci Web, takich jak ID, Nazwa, Klasa, XPath, Zmienna, Selektory CSS, Tekst odsyłacza itp.
Sterownik sieciowy udostępnia następujące dwie metody WebElement do znajdowania elementów.
- findElement () - znajduje pojedynczy element sieciowy i zwraca jako obiekt WebElement Selenium.
- 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 (). W kolejnych samouczkach omówimy metodę findElements () znajdującą wiele elementów.
Krok 1: Musimy zaimportować ten pakiet, aby utworzyć obiekty Web Elements
Krok 2: Musimy wywołać metodę findElement () dostępną w klasie WebDriver i pobrać obiekt WebElement.
Zobacz poniżej, jak to się robi.
Pole wprowadzania
Pola wejściowe odnoszą się do jednego z tych dwóch typów:
- Pola tekstowe - pola tekstowe wejściowe selenu, które akceptują wpisywane wartości i pokazują je takimi, jakie są.
- Pola haseł - pola tekstowe, które akceptują wpisywane wartości, ale maskują je jako ciąg znaków specjalnych (zwykle kropek i gwiazdek), aby uniknąć wyświetlania wrażliwych wartości.
Lokalizatory
Metoda findElement () przyjmuje jeden parametr, który jest lokalizatorem elementu. Różne lokalizatory, takie jak By.id (), By.name (), By.xpath (), By.CSSSelector () itp. Lokalizują elementy na stronie za pomocą ich właściwości, takich jak `` '' id, name lub path, 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 http://demo.guru99.com/test/login.html podanej poniżej, jest kod umożliwiający zlokalizowanie pola tekstowego „Adres e-mail” za pomocą lokalizatora identyfikatora i pola „Hasło” za pomocą lokalizatora nazw.
- Pole tekstowe e-maila jest zlokalizowane według identyfikatora
- Pole hasła jest zlokalizowane według nazwy
sendkeys w Selenium
sendkeys () w Selenium to metoda używana do wprowadzania edytowalnej treś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 WWW. W przeciwieństwie do metody type metoda sendkeys () nie zastępuje istniejącego tekstu w żadnym polu tekstowym.
Wprowadzanie wartości w polach wprowadzania
Aby wprowadzić tekst do pól tekstowych i pól hasła, sendKeys () jest metodą dostępną w WebElement w Selenium.
Korzystając z tego samego przykładu witryny http://demo.guru99.com/test/login.html, oto jak znajdujemy pole tekstowe i pola hasła i wprowadzamy tekst w selenie.
- Znajdź pole tekstowe „Adres e-mail” za pomocą lokalizatora identyfikatorów.
- Znajdź pole „Hasło” za pomocą lokalizatora nazw
- Wprowadź tekst w polu „Adres e-mail” przy użyciu metody Selenium sendkeys.
- Wprowadź hasło w polu „Hasło” za pomocą metody sendKeys ().
Usuwanie wartości w polach wprowadzania
Metoda clear () służy do usuwania tekstu w polu wprowadzania. Ta metoda nie wymaga parametru . Poniższy fragment kodu usunie tekst z pól E-mail lub Hasło
guziki
Dostęp do przycisku Selenium można uzyskać za pomocą metody click ().
W powyższym przykładzie
- Znajdź przycisk, aby się zalogować
- Kliknij przycisk „Zaloguj się” na stronie logowania w witrynie, aby zalogować się do serwisu.
Przyciski przesyłania
Przyciski przesyłania służą do przesłania całego formularza na serwer. Możemy użyć metody click () w elemencie web, tak jak zwykłego przycisku, jak to zrobiliśmy powyżej, lub użyć metody submit () na dowolnym elemencie WWW w formularzu lub na samym przycisku przesyłania.
Kiedy jest używana funkcja submit (), WebDriver przeszuka DOM, aby dowiedzieć się, do której formy należy element, a następnie uruchomi swoją funkcję przesyłania.
Kompletny kod
Oto cały 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) {// deklaracja i tworzenie instancji obiektów / zmiennychSystem.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Sterownik WebDriver = nowy ChromeDriver ();String baseUrl = "http://demo.guru99.com/test/login.html";driver.get (baseUrl);// Pobierz element WebElement odpowiadający adresowi e-mail (TextField)WebElement email = driver.findElement (By.id ("email"));// Pobierz element WebElement odpowiadający polu hasłaWebElement hasło = driver.findElement (By.name ("passwd"));email.sendKeys (" Ten adres e-mail jest chroniony przed robotami spamującymi. Aby go zobaczyć, konieczne jest włączenie obsługi JavaScript.");password.sendKeys ("abcdefghlkjl");System.out.println ("Zestaw pól tekstowych");// Usuwanie wartości w polu tekstowymemail.clear ();password.clear ();System.out.println ("Wyczyszczono pole tekstowe");// Znajdź przycisk przesyłaniaWebElement login = driver.findElement (By.id ("SubmitLogin"));// Przesyłanie formularza za pomocą metody klikaniaemail.sendKeys (" Ten adres e-mail jest chroniony przed robotami spamującymi. Aby go zobaczyć, konieczne jest włączenie obsługi JavaScript."); password.sendKeys ("abcdefghlkjl"); login.click (); System.out.println ("Logowanie zakończone kliknięciem"); // użycie metody przesyłania do przesłania formularza. Prześlij używane w polu hasła driver.get (baseUrl); driver.findElement (By.id ("email")). sendKeys (" Ten adres e-mail jest chroniony przed robotami spamującymi. Aby go zobaczyć, konieczne jest włączenie obsługi JavaScript."); driver.findElement (By.name ("passwd")). sendKeys ("abcdefghlkjl"); driver.findElement (By.id ("SubmitLogin")). submit (); System.out.println ("Logowanie zakończone za pomocą przesyłania"); //driver.close (); }}
Rozwiązywanie problemów
Jeśli napotkasz NoSuchElementException () podczas wyszukiwania elementów, oznacza to, że element nie został znaleziony na stronie w miejscu, w którym sterownik sieciowy uzyskał dostęp do strony.
- Sprawdź swój lokalizator ponownie, używając Firepath lub Inspect Element w Chrome.
- Sprawdź teraz, czy wartość użyta w kodzie różni się od wartości elementu w Firepath.
- Niektóre właściwości są dynamiczne dla kilku elementów. W przypadku stwierdzenia, że wartość jest inna i zmienia się dynamicznie, rozważ użycie By.xpath () lub By.cssSelector (), które są bardziej niezawodne, ale bardziej złożone.
- Czasami może to być również problem z czekaniem, tj. Sterownik sieciowy wykonał kod nawet przed całkowitym załadowaniem strony itp.
- Dodaj oczekiwanie przed findElement (), używając niejawnych lub jawnych czekań.
Podsumowanie
- Poniższa tabela zawiera podsumowanie poleceń umożliwiających dostęp do każdego typu elementu omówionego powyżej
Element | Komenda | Opis |
---|---|---|
Pole wprowadzania | sendKeys () | służy do wprowadzania wartości w polach tekstowych |
jasny() | służy do usuwania bieżącej wartości z pól tekstowych | |
Spinki do mankietów | Kliknij() | służy do klikania linku i czekania na zakończenie ładowania strony przed przejściem do następnego polecenia. |
Przycisk Prześlij | Zatwierdź() |
- WebDriver umożliwia wybór więcej niż jednej opcji w wielu elementach SELECT.
- Możesz użyć metody submit () na dowolnym elemencie formularza. WebDriver automatycznie uruchomi funkcję przesyłania formularza, do którego należy ten element.