Znajdź elementy według tekstu linku & Częściowy tekst linku w Selenium Webdriver

Spisie treści:

Anonim

Co to jest tekst linku w selenie?

Link Text w selen służy do identyfikacji hiperłącza na stronie internetowej. Określa się to za pomocą tagu kotwicy. Aby utworzyć hiperłącza na stronie internetowej, możemy użyć tagu kotwicy, po którym następuje tekst łącza.

Linki pasujące do kryterium

Dostęp do łączy można uzyskać za pomocą dokładnego lub częściowego dopasowania ich tekstu. Poniższe przykłady przedstawiają scenariusze, w których mogłoby istnieć wiele dopasowań, i wyjaśniają, jak poradzi sobie z nimi WebDriver.

W tym samouczku nauczymy się dostępnych metod wyszukiwania i uzyskiwania dostępu do łączy za pomocą programu Webdriver. Omówimy również niektóre typowe problemy napotykane podczas uzyskiwania dostępu do łączy, a także omówimy dalej, jak je rozwiązać.

Oto, czego się nauczysz-

  • Dostęp do łączy przy użyciu dokładnego dopasowania tekstu: By.linkText ()
  • Dostęp do łączy przy użyciu dopasowania częściowego tekstu: By.partialLinkText ()
  • Jak uzyskać wiele linków z tym samym tekstem łącza
  • Rozróżnianie wielkości liter w tekście łącza
  • Łącza na zewnątrz i wewnątrz bloku

Dostęp do łączy przy użyciu dokładnego dopasowania tekstu: By.linkText ()

Dostęp do łączy przy użyciu ich dokładnego tekstu odbywa się za pomocą metody By.linkText () . Jeśli jednak istnieją dwa łącza, które mają ten sam tekst, ta metoda będzie miała dostęp tylko do pierwszego. Rozważ poniższy kod HTML

Podczas próby uruchomienia poniższego kodu WebDriver uzyskasz dostęp do pierwszego łącza „kliknij tutaj”

Kod:

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;klasa publiczna MyClass {public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Sterownik WebDriver = nowy ChromeDriver ();driver.get (baseUrl);driver.findElement (By.linkText ("kliknij tutaj")). click ();System.out.println ("tytuł strony to: + driver.getTitle ());driver.quit ();}}

Oto jak to działa-

W rezultacie zostaniesz automatycznie przeniesiony do Google.

Dostęp do łączy przy użyciu dopasowania częściowego tekstu: By.partialLinkText ()

Dostęp do łączy przy użyciu części ich tekstu odbywa się za pomocą metody By.partialLinkText () . Jeśli określisz częściowy tekst linku, który ma wiele dopasowań, tylko pierwsze dopasowanie będzie dostępne. Rozważ poniższy kod HTML.

Po wykonaniu poniższego kodu WebDriver zostaniesz przeniesiony do Google.

Kod:

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;klasa publiczna P1 {public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/accessing-link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Sterownik WebDriver = nowy ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("tutaj")). click ();System.out.println ("Tytuł strony to: + driver.getTitle ());driver.quit ();}}

Jak uzyskać wiele linków z tym samym tekstem łącza

Jak więc obejść powyższy problem? W przypadkach, gdy istnieje wiele linków z tym samym tekstem łącza, a my chcemy uzyskać dostęp do linków innych niż pierwszy, jak sobie z tym poradzimy?

W takich przypadkach na ogół używane są różne lokalizatory, a mianowicie… By.xpath (), By.cssSelector () lub By.tagName ().

Najczęściej używana jest By.xpath (). Jest najbardziej niezawodny, ale wygląda na skomplikowany i nieczytelny.

Rozróżnianie wielkości liter w tekście łącza

W parametrach By.linkText () i By.partialLinkText () rozróżniana jest wielkość liter, co oznacza, że wielkość liter ma znaczenie. Na przykład na stronie głównej Mercury Tours znajdują się dwa łącza zawierające tekst „egis” - jeden to „REJESTRACJA” znajdujący się w górnym menu, a drugi to „Zarejestruj się tutaj” znajdujący się w prawej dolnej części strony.

Chociaż oba łącza zawierają sekwencję znaków „egis”, jednym z nich jest metoda „By.partialLinkText ()”, która będzie uzyskiwać dostęp do tych dwóch linków oddzielnie w zależności od wielkości liter. Zobacz przykładowy kod poniżej.

Kod

public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Sterownik WebDriver = nowy ChromeDriver ();driver.get (baseUrl);String theLinkText = driver.findElement (By.partialLinkText („egis”)).getText ();System.out.println (theLinkText);theLinkText = driver.findElement (wg.partialLinkText („EGIS”)).getText ();System.out.println (theLinkText);driver.quit ();}

Łącza na zewnątrz i wewnątrz bloku

Najnowszy standard HTML5 umożliwia umieszczanie tagów wewnątrz i na zewnątrz tagów blokowych, takich jak

,

lub

. Metody „By.linkText ()” i „By.partialLinkText ()” mogą uzyskać dostęp do łącza znajdującego się na zewnątrz i wewnątrz tych elementów blokowych. Rozważ poniższy kod HTML.

Poniższy kod WebDriver uzyskuje dostęp do obu tych łączy za pomocą metody By.partialLinkText ().

Kod:

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;klasa publiczna MyClass {public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/block.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Sterownik WebDriver = nowy ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("Inside")). click ();System.out.println (driver.getTitle ());driver.navigate (). back ();driver.findElement (By.partialLinkText ("Outside")). click ();System.out.println (driver.getTitle ());driver.quit ();}}

Powyższe dane wyjściowe potwierdzają, że oba łącza zostały pomyślnie pobrane, ponieważ ich tytuły stron zostały pobrane poprawnie.

Podsumowanie

  • Dostęp do łączy uzyskuje się za pomocą metody click ().
  • Oprócz lokalizatorów dostępnych dla każdego elementu WebElement, linki mają również lokalizatory oparte na tekście linków:
    • By.linkText () - lokalizuje linki na podstawie dokładnego dopasowania tekstu linku podanego jako parametr.
    • By.partialLinkText () - lokalizuje linki na podstawie częściowego dopasowania tekstu do tekstu linku.
  • W obu powyższych lokalizatorach rozróżniana jest wielkość liter.
  • Jeśli istnieje wiele dopasowań, By.linkText () i By.partialLinkText () wybiorą tylko pierwsze dopasowanie. W takich przypadkach, gdy występuje wiele linków z tym samym tekstem linku, używane są inne lokalizatory oparte na xpath, CSS.
  • findElements () & By.tagName ("a") metoda znajduje wszystkie elementy na stronie pasujące do kryteriów lokalizatora
  • Dostęp do łączy można uzyskać za pomocą By.linkText () i By.partialLinkText (), niezależnie od tego, czy znajdują się one wewnątrz, czy na zewnątrz elementów blokowych.