Articles

Find Element w Selenium : Różnice pomiędzy Selenium findElement i findElements

Posted on

Szukanie elementów na stronie internetowej może być koszmarem z powodu złożoności elementów webowych. Jednakże, elementy webowe odgrywają istotną rolę w tworzeniu i testowaniu każdej aplikacji. Aby ułatwić pracę testerom, ten artykuł będzie oferował pewien wgląd w Selenium findElement i findElements z pomocą przykładu.

Oto co będzie przedmiotem tego artykułu:

  1. Wprowadzenie do Selenium findElement
  2. Różnica między findElement a findElements
  3. Syntaktyka Selenium findElement
  4. Typy lokalizatorów
  5. Używanie lokalizatora. Strategia do findElement

Wprowadzenie do Selenium findElement

Interakcja ze stroną internetową wymaga od sterownika zlokalizowania elementu sieciowego i albo wywołania zdarzenia JavaScript, takiego jak kliknięcie, enter, select, itp. lub wpisania wartości pola. Zazwyczaj, zaczynamy zautomatyzowane testowanie jakiejkolwiek aplikacji internetowej od znalezienia odpowiednich elementów na stronie internetowej. Najczęściej, takie zautomatyzowane testy wykonywane są przy użyciu frameworków takich jak Selenium WebDriver.

Selenium definiuje dwie metody identyfikacji elementów WWW:

  • findElement: Polecenie używane do jednoznacznej identyfikacji elementu webowego w obrębie strony internetowej.
  • findElements: Polecenie używane do identyfikowania listy elementów WWW w obrębie strony WWW.

Zrozummy różnicę między tymi dwiema metodami bardziej szczegółowo.

Różnica pomiędzy findElement a findElements

findElement findElements
Zwraca pierwszy pasujący element strony, jeśli lokalizator wykrył wiele elementów strony Zwraca listę wielu pasujących elementów strony
Rzuca wyjątek NoSuchElementException, jeśli element nie został znaleziony Zwraca pustą listę, jeśli nie znaleziono pasującego elementu
Wykrywa unikalny element element Wraca kolekcję pasujących elementów

Aby zrozumieć niektóre podstawowe komendy Selenium, spójrz na Podstawowe komendy Selenium Webdriver.

Syntaktyka Selenium findElement

Komenda findElement zwraca obiekt typu WebElement. Może wykorzystywać różne strategie lokalizatora takie jak ID, Name, ClassName, link text, XPath, etc.

Poniżej znajduje się składnia:

WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));

Strategia lokalizatora zawiera następujące wartości.

  1. ID
  2. Name
  3. Nazwa klasy
  4. Nazwa tagu
  5. Tekst linku
  6. XPath

Wartość lokalizatora jest unikalną metodą, za pomocą której można łatwo zidentyfikować element WWW.

Przykład:

driver.findElement(By.xpath("//input")).sendKeys("Guitar");

Syntaktyka Selenium findElements

Komenda findElements zwraca pustą listę, jeśli nie ma elementów znalezionych przy użyciu podanej strategii lokalizatora i wartości lokalizatora. Poniżej znajduje się składnia komendy findElements.

List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));

Przykład:

List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));

Próbka Selenium Testing for Free

Zagłębmy się teraz w zrozumienie jak znaleźć elementy sieci za pomocą różnych lokalizatorów. Można odnieść się do różnych typów lokalizatorów w Selenium.

Zrozummy jak używać Selenium findElement na różne sposoby:

Szukanie przez ID

ID jest unikalnie zdefiniowany dla każdego elementu i jest najczęstszym sposobem lokalizowania elementów przy użyciu lokalizatora ID. Jeśli strona posiada dynamicznie generowane identyfikatory, to ta strategia nie może być użyta do jednoznacznego odnalezienia elementu. Jednakże, zwróci ona pierwszy element strony, który pasuje do lokalizatora.

Przykład: Weźmy www.amazon.com do zautomatyzowania i znalezienia elementów. Po przejściu przez pole wyszukiwania i sprawdzeniu elementu, będzie można zobaczyć różne elementy, jak pokazano na poniższym zrzucie.

Jak widać, zawiera on lokalizator ID, którego wartością jest twotabsearchtextbox. Poniższy snippet używa tej samej wartości lokalizatora do napisania programu.

Find by Name

Jest to podobne do Find By ID z tą różnicą, że sterownik będzie lokalizował element po atrybucie „name” zamiast „id”.

Przykład: Rozważmy tę samą stronę internetową amazonu. Pole wyszukiwania również posiada lokalizator nazwy, którego wartość to „field-keywords”, jak pokazano na poniższym zrzucie.

Cały kod pozostaje podobny do tego z lokalizatora ID, z tą różnicą, że różnica będzie w składni findElement.

elementName = driver.findElement(By.name("field-keywords"))

Find By LinkText

LinkText jest pomocny w znajdowaniu linków na stronie internetowej. Jest to najbardziej efektywny sposób znajdowania elementów strony zawierających linki.

Zlokalizuj teraz link Returns, jak pokazano poniżej.

Gdy tester trafi na ten link i wykona inspekcję, zlokalizuje tekst linku Returns, jak pokazano na zrzucie poniżej.

To może być zlokalizowane po prostu przy użyciu Selenium findElement z poniższą składnią:

elementLinktext = driver.findElement(By.linkText("Returns”))

Find By CSS Selector

CSS Selector jest używany do dostarczania reguł stylu dla stron internetowych, a także może być używany do identyfikacji jednego lub więcej elementów internetowych.

Przykład: Rozważmy to samo pole wyszukiwania na stronie Amazon. Posiada ono atrybut class, którego wartością jest nav-search-input. Używając tej samej wartości, metoda Selenium findElement może zlokalizować ten element.

elementcss= driver.findElement(By.cssSelector('div.nav-search-input'))

Find By XPath

XPath jest techniką w Selenium do nawigacji po strukturze HTML strony. XPath umożliwia testerom poruszanie się po strukturze XML dowolnego dokumentu i może być używany zarówno na dokumentach HTML jak i XML.

Przykład: Spróbujmy zlokalizować ten sam pasek wyszukiwania w Amazon za pomocą XPath. Poniższy kod pokazuje, że zawiera on lokalizator ID. Zauważ, że względny XPath zaczyna się od '//'.

Na poniższym obrazku widać tag input. Zacznij od //input. Tutaj //input implikuje nazwę znacznika. Wykorzystaj atrybut id i przekaż twotabsearchtextbox w pojedynczych cudzysłowach jako jego wartość. W ten sposób otrzymamy wyrażenie XPath pokazane poniżej:

//input

Następnie, używając metody Selenium findElement, wykonaj poniższy kod:

elementxpath = driver.findElement(By.xpath("//input"))

Run Selenium Tests for Free on Real Devices

Lokalizacja elementów sieciowych jest podstawą zautomatyzowanych testów Selenium stron internetowych i aplikacji webowych. Aby dowiedzieć się więcej o podstawach Selenium, spójrz na Selenium WebDriver Tutorial.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *