Element sieciowy w Selenium

โšก Inteligentne podsumowanie

Element sieciowy w Selenium reprezentuje kaลผdฤ… kontrolkฤ™ formularza jako obiekt programowalny, umoลผliwiajฤ…c testerom interakcjฤ™ z polami tekstowymi, polami wyboru, przyciskami radiowymi i elementami przesyล‚ania za pomocฤ… metod findElement, sendKeys, click, clear i submit Java przykล‚ady kodu.

  • ๐Ÿงฉ Dokล‚adnoล›ฤ‡ lokalizatora: Identyfikuj elementy formularza wedล‚ug identyfikatora, nazwy, ล›cieลผki XPath lub selektora CSS za pomocฤ… findElement(), aby zapewniฤ‡ stabilnฤ… interakcjฤ™ z DOM.
  • โœ๏ธ. Obsล‚uga wejล›ฤ‡: Wyล›lij edytowalny tekst do pรณl za pomocฤ… sendKeys() bez nadpisywania istniejฤ…cych wartoล›ci podczas automatycznego wykonywania.
  • ๐Ÿงน Resetowanie pola: Wyczyล›ฤ‡ pola wprowadzania danych za pomocฤ… metody clear() przed ponownym wprowadzeniem danych, zapobiegajฤ…c w ten sposรณb powstawaniu wartoล›ci resztkowych w pรณลบniejszych potwierdzeniach.
  • ๐Ÿ–ฑ๏ธ. Interakcja z przyciskami: Wyzwalaj akcje logowania lub nawigacji za pomocฤ… metody click() w odpowiednim odniesieniu WebElement.
  • ๐Ÿ“จ Przesyล‚anie formularza: Uลผyj submit() w dowolnym elemencie formularza, aby WebDriver automatycznie wysล‚aล‚ procedurฤ™ obsล‚ugi przesyล‚ania formularza nadrzฤ™dnego.
  • ๐Ÿ›ก๏ธ Wskazรณwka dotyczฤ…ca stabilnoล›ci: Dodaj jawne lub niejawne oczekiwania przed wywoล‚aniami findElement(), aby zapobiec wystฤ…pieniu wyjฤ…tku NoSuchElementException na stronach ล‚adowanych dynamicznie.

Element sieciowy w Selenium

Element sieciowy w Selenium

Formularze to podstawowe elementy internetowe, ktรณre gromadzฤ… informacje od odwiedzajฤ…cych witrynฤ™. Formularze internetowe zawierajฤ… rรณลผne elementy graficznego interfejsu uลผytkownika, takie jak pola tekstowe, pola haseล‚, pola wyboru, przyciski radiowe, listy rozwijane i pola wprowadzania plikรณw.

W tym samouczku wyjaล›niono, jak uzyskaฤ‡ dostฤ™p do kaลผdego elementu formularza za pomocฤ… Selenium WebDriver z Java. Selenium hermetyzuje kaลผdy element formularza jako obiekt WebElement. Udostฤ™pnia API do lokalizowania elementรณw i wykonywania na nich dziaล‚aล„, w tym wprowadzania tekstu, klikania przyciskรณw i przesyล‚ania formularzy. Poniลผsze sekcje opisujฤ… metody dostฤ™pne dla kaลผdego elementu formularza.

Wprowadzenie do WebElement FindElement, FindElements

Wprowadzenie do WebElement, findElement(), findElements()

Selenium WebDriver reprezentuje prosty element formularza jako obiekt Element internetowy.

WebDriver identyfikuje elementy formularza, korzystajฤ…c z rรณลผnych wล‚aล›ciwoล›ci elementu internetowego, w tym ID, nazwy, klasy, XPath, Tagname, selektory CSS i tekst linku.

WebDriver udostฤ™pnia dwie nastฤ™pujฤ…ce metody WebElement umoลผliwiajฤ…ce wyszukiwanie elementรณw:

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

Poniลผszy przykล‚ad pokazuje, jak pobraฤ‡ pojedynczy element, pole tekstowe na stronie internetowej, jako obiekt WebElement za pomocฤ… metody findElement(). Metoda findElements() sล‚uลผฤ…ca do wyszukiwania wielu elementรณw zostanie omรณwiona w kolejnych samouczkach.

Krok 1) Zaimportuj pakiet wymagany do tworzenia obiektรณw WebElement.

Krok 2) Wywoล‚aj metodฤ™ findElement() dostฤ™pnฤ… w klasie WebDriver, aby pobraฤ‡ obiekt WebElement, jak pokazano poniลผej.

Selenium Wprowadลบ tekst

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

  1. Pola tekstowe - Selenium pola tekstowe, ktรณre akceptujฤ… wpisywane wartoล›ci i wyล›wietlajฤ… je dokล‚adnie tak, jak zostaล‚y wprowadzone.
  2. Pola hasล‚a โ€“ pola tekstowe, ktรณre akceptujฤ… wprowadzane wartoล›ci, ale maskujฤ… je jako ciฤ…g znakรณw specjalnych (najczฤ™ล›ciej kropek lub gwiazdek), aby ukryฤ‡ poufne dane wejล›ciowe.

    Selenium Wprowadลบ tekst

Lokalizatory

Metoda findElement() przyjmuje jeden parametr, ktรณry jest lokalizatorem wskazujฤ…cym na element. Rรณลผne lokalizatory, w tym By.id(), By.name(), By.xpath() i By.cssSelector(), wyszukujฤ… elementy na stronie za pomocฤ… ich wล‚aล›ciwoล›ci, takich jak id, nazwa lub ล›cieลผka.

Za pomocฤ… wtyczek takich jak FirePath moลผna uzyskaฤ‡ identyfikator, ล›cieลผkฤ™ xpath i inne wartoล›ci lokalizatora elementรณw.

Korzystajฤ…c z przykล‚adowej witryny https://demo.guru99.com/test/login.htmlPoniลผszy kod lokalizuje pole tekstowe โ€žAdres e-mailโ€ za pomocฤ… lokalizatora identyfikatora i pole โ€žHasล‚oโ€ za pomocฤ… lokalizatora nazwy.

Lokalizatory

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

wyล›lij klucze Selenium

sendKeys() w Selenium to metoda sล‚uลผฤ…ca do wprowadzania edytowalnej treล›ci w polach tekstowych i hasล‚a podczas wykonywania testu. Pola te sฤ… identyfikowane za pomocฤ… lokalizatorรณw, takich jak nazwa, klasa i identyfikator. Metoda jest dostฤ™pna w obiekcie WebElement. W przeciwieล„stwie do metody typu, sendKeys() nie zastฤ™puje istniejฤ…cego tekstu w polu tekstowym.

Jak wprowadziฤ‡ tekst w Selenium

Aby wprowadziฤ‡ tekst do pรณl tekstowych i pรณl haseล‚, metoda sendKeys() jest dostฤ™pna w WebElement w Selenium.

Uลผywajฤ…c tego samego przykล‚adu https://demo.guru99.com/test/login.htmlponiลผszy fragment kodu lokalizuje pole tekstowe i pole hasล‚a i wprowadza 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 usuwa tekst znajdujฤ…cy siฤ™ wewnฤ…trz pola wprowadzania danych. Ta metoda nie wymaga parametru. Poniลผszy fragment usuwa tekst z pรณl Adres e-mail lub Hasล‚o.

Usuwanie wartoล›ci wejล›ciowych Boxes

Selenium Kliknij Przyciski

Selenium Dostฤ™p do przycisku klikniฤ™cia uzyskuje siฤ™ za pomocฤ… metody click().

W powyลผszym przykล‚adzie

  1. Znajdลบ przycisk Zaloguj siฤ™.
  2. Aby uwierzytelniฤ‡ siฤ™, kliknij przycisk โ€žZaloguj siฤ™โ€ na stronie logowania witryny.

Selenium Kliknij Przyciski

Selenium Przyciski Przeล›lij

Przyciski โ€žPrzeล›lijโ€ wysyล‚ajฤ… caล‚y formularz na serwer. Moลผesz wywoล‚aฤ‡ metodฤ™ click() na elemencie WebElement, jak pokazano powyลผej, lub uลผyฤ‡ metody submit() na dowolnym elemencie formularza lub na samym przycisku โ€žPrzeล›lijโ€.

Selenium Przyciski Przeล›lij

Po uลผyciu funkcji submit() WebDriver przeszukuje DOM w celu zidentyfikowania formularza, do ktรณrego naleลผy element, a nastฤ™pnie uruchamia funkcjฤ™ submit.

Absolutna Code

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ลผeli podczas wyszukiwania elementรณw napotkasz wyjฤ…tek NoSuchElementException(), oznacza to, ลผe element nie znajduje siฤ™ na stronie w momencie, gdy WebDriver uzyskuje do niego dostฤ™p.

  1. Sprawdลบ ponownie swรณj lokalizator za pomocฤ… FirePath lub opcji Zbadaj element w Chrome.
  2. Sprawdลบ, czy wartoล›ฤ‡ uลผyta w kodzie rรณลผni siฤ™ od bieลผฤ…cej wartoล›ci elementu widocznej w FirePath.
  3. Niektรณre atrybuty sฤ… dynamiczne dla okreล›lonych elementรณw. Jeล›li wartoล›ฤ‡ zmienia siฤ™ dynamicznie, skorzystaj z By.xpath() lub By.cssSelector(), ktรณre sฤ… bardziej niezawodne, ale nieco bardziej zล‚oลผone.
  4. Czasami problemem jest warunek oczekiwania; WebDriver moลผe wykonaฤ‡ kod przed zakoล„czeniem ล‚adowania strony.
  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() Sล‚uลผy do klikniฤ™cia ล‚ฤ…cza i oczekiwania na zakoล„czenie ล‚adowania strony przed przejล›ciem do nastฤ™pnego polecenia.
Umieล›ฤ‡ przycisk skล‚adaฤ‡() Sล‚uลผy do wysล‚ania formularza poprzez wyzwolenie procedury przesyล‚ania formularza nadrzฤ™dnego.
  • WebDriver umoลผliwia wybรณr wiฤ™cej niลผ jednej opcji w wielokrotnym elemencie SELECT.
  • Moลผesz uลผyฤ‡ metody submit() dla dowolnego elementu w formularzu. WebDriver automatycznie uruchamia funkcjฤ™ submit formularza, do ktรณrego naleลผy dany element.

FAQ

findElement() zwraca pierwszy pasujฤ…cy WebElement i zgล‚asza wyjฤ…tek NoSuchElementException, jeล›li ลผaden nie istnieje. findElements() zwraca listฤ™ pasujฤ…cych WebElements i zwraca pustฤ… listฤ™, jeล›li ลผaden element nie pasuje do lokalizatora.

Element WebElement to Selenium Wrapper, ktรณry udostฤ™pnia metody automatyzacji, takie jak sendKeys, click i clear. Element HTML to podstawowy wฤ™zeล‚ DOM. WebDriver lokalizuje wฤ™zeล‚ DOM i zwraca referencjฤ™ WebElement do interakcji.

Tak. Narzฤ™dzia wspomagane przez sztucznฤ… inteligencjฤ™ analizujฤ… DOM i proponujฤ… stabilne lokalizatory za pomocฤ… identyfikatorรณw, nazw, wzglฤ™dnych ล›cieลผek XPath lub selektorรณw CSS. Zmniejszajฤ… one kruchoล›ฤ‡ lokalizatorรณw, wykrywajฤ…c unikalne kombinacje atrybutรณw i sugerujฤ…c rozwiฤ…zania awaryjne w przypadku zmiany atrybutu.

Tak. Samonaprawiajฤ…ce siฤ™ lokalizatory oparte na sztucznej inteligencji automatycznie ponownie wiฤ…ลผฤ… WebElement po zmianie atrybutu. Zmniejsza to ryzyko wystฤ…pienia niestabilnych awarii, zmniejsza nakล‚ad pracy na konserwacjฤ™ i zapewnia Selenium zapewnia stabilnoล›ฤ‡ przy czฤ™stych aktualizacjach interfejsu uลผytkownika w cyklach dostaw Agile.

Do typowych wyjฤ…tkรณw WebElement naleลผฤ… StaleElementReferenceException, ElementNotInteractableException, ElementClickInterceptedException, InvalidElementStateException i TimeoutException. Kaลผdy z nich wskazuje na inny problem z DOM, widocznoล›ciฤ… lub synchronizacjฤ…, ktรณry naleลผy obsล‚uลผyฤ‡ za pomocฤ… waitรณw lub odล›wieลผonych referencji do elementรณw.

Podsumuj ten post nastฤ™pujฤ…co: