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
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:
- Pola tekstowe- Selenium pola tekstowe, ktรณre akceptujฤ wprowadzane wartoลci i wyลwietlajฤ je w takiej postaci, w jakiej sฤ .
- 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.
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.
- Pole tekstowe e-maila znajduje siฤ wedลug identyfikatora
- 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.
- 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โ za pomocฤ Selenium metoda sendkeys.
- 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
Selenium Kliknij Przyciski
Selenium Dostฤp do przycisku klikniฤcia moลผna uzyskaฤ za pomocฤ metody click().
W powyลผszym przykลadzie
- Znajdลบ przycisk, aby siฤ zalogowaฤ
- Kliknij przycisk โZaloguj siฤโ na stronie logowania, aby zalogowaฤ siฤ do witryny.
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.
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.
- Sprawdลบ ponownie swรณj lokalizator za pomocฤ Firepath lub Inspect Element w przeglฤ darce Chrome.
- Sprawdลบ, czy wartoลฤ uลผyta w kodzie rรณลผni siฤ teraz od wartoลci elementu w Firepath.
- 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.
- 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.
- 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.






