Pronađi elemente pomoću teksta veze & Tekst djelomične veze u Selenium Webdriver

Sadržaj:

Anonim

Što je tekst veze u selenu?

Link Tekst selena se koristi za identifikaciju linkove na web-stranici. Određuje se uz pomoć sidrene oznake. Za stvaranje hiperveza na web stranici možemo koristiti sidrenu oznaku nakon koje slijedi veza Tekst.

Veze koje odgovaraju kriteriju

Vezama se može pristupiti pomoću točnog ili djelomičnog podudaranja njihovog teksta veze. Primjeri u nastavku pružaju scenarije u kojima bi postojalo više podudaranja i objašnjavaju kako će se WebDriver nositi s njima.

U ovom uputstvu naučit ćemo dostupne metode za pronalaženje i pristup Vezama pomoću Webdrivera. Također, razgovarat ćemo o nekim uobičajenim problemima s kojima se suočavaju prilikom pristupanja Vezama i dalje o tome kako ih riješiti.

Evo što ćete naučiti-

  • Pristup vezama pomoću točnog podudaranja teksta: By.linkText ()
  • Pristup vezama pomoću djelomičnog podudaranja teksta: By.partialLinkText ()
  • Kako doći do više veza s istim tekstom veze
  • Osjetljivost na velika i mala slova za tekst veze
  • Veze izvana i unutar bloka

Pristup vezama pomoću točnog podudaranja teksta: By.linkText ()

Pristup vezama koristeći njihov točan tekst veze vrši se metodom By.linkText () . Međutim, ako postoje dvije veze koje imaju isti tekst veze, ova će metoda pristupiti samo prvoj. Razmotrite HTML kôd u nastavku

Kad pokušate pokrenuti donji WebDriver kod, pristupit ćete prvoj vezi "kliknite ovdje"

Kodirati:

uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.chrome.ChromeDriver;javna klasa MyClass {javna statička void glavna (String [] args) {String baseUrl = "http://demo.guru99.com/test/link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Upravljački program WebDriver = novi ChromeDriver ();driver.get (baseUrl);driver.findElement (By.linkText ("kliknite ovdje")). click ();System.out.println ("naslov stranice je: + driver.getTitle ());driver.quit ();}}

Evo kako to radi-

Kao rezultat, automatski ćete biti preusmjereni na Google.

Pristup vezama pomoću djelomičnog podudaranja teksta: By.partialLinkText ()

Pristup vezama pomoću dijela teksta njihovog linka vrši se metodom By.partialLinkText () . Ako navedete djelomični tekst veze koji ima više podudaranja, pristupit će se samo prvom podudaranju. Razmotrite HTML kôd u nastavku.

Kada izvršite donji WebDriver kod, i dalje ćete biti preusmjereni na Google.

Kodirati:

uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.chrome.ChromeDriver;javna klasa P1 {javna statička void glavna (String [] args) {String baseUrl = "http://demo.guru99.com/test/accessing-link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Upravljački program WebDriver = novi ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("ovdje")). click ();System.out.println ("Naslov stranice je: + driver.getTitle ());driver.quit ();}}

Kako doći do više veza s istim tekstom veze

Dakle, kako zaobići gornji problem? U slučajevima kada postoji više poveznica s istim tekstom veze, a mi želimo pristupiti vezama koje nisu prva, kako to postupiti?

U takvim se slučajevima uglavnom koriste različiti lokatori, naime ... By.xpath (), By.cssSelector () ili By.tagName ().

Najčešće se koristi By.xpath (). Najpouzdaniji je, ali izgleda i složeno i nečitko.

Osjetljivost na velika i mala slova za tekst veze

Parametri za By.linkText () i By.partialLinkText () razlikuju velika i mala slova, što znači da su velika slova bitna. Na primjer, na početnoj stranici Mercury Toursa postoje dvije poveznice koje sadrže tekst "egis" - jedan je link "REGISTRUJ" koji se nalazi u gornjem izborniku, a drugi je link "Registriraj se ovdje" u donjem desnom dijelu stranice.

Iako obje poveznice sadrže slijed znakova "egis", jedna je metoda "By.partialLinkText ()" pristupit će ove dvije veze zasebno, ovisno o pisanju velikih slova u znakovima. Pogledajte uzorak koda u nastavku.

Kodirati

javna statička void glavna (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Upravljački program WebDriver = novi ChromeDriver ();driver.get (baseUrl);String theLinkText = driver.findElement (Autor.partialLinkText ("egis")).getText ();System.out.println (theLinkText);theLinkText = driver.findElement (Autor.partialLinkText ("EGIS")).getText ();System.out.println (theLinkText);driver.quit ();}

Veze izvana i unutar bloka

Najnoviji HTML5 standard omogućuje postavljanje oznaka unutar i izvan oznaka na razini bloka poput

,

ili

. Metode "By.linkText ()" i "By.partialLinkText ()" mogu pristupiti vezi koja se nalazi izvan i unutar ovih elemenata na razini bloka. Razmotrite HTML kôd u nastavku.

Kôd WebDriver dolje pristupa obje ove veze pomoću metode By.partialLinkText ().

Kodirati:

uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.chrome.ChromeDriver;javna klasa MyClass {javna statička void glavna (String [] args) {String baseUrl = "http://demo.guru99.com/test/block.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Upravljački program WebDriver = novi ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("Unutra")). click ();System.out.println (driver.getTitle ());driver.navigate (). back ();driver.findElement (By.partialLinkText ("Outside")). click ();System.out.println (driver.getTitle ());driver.quit ();}}

Izlaz gore potvrđuje da su obje veze uspješno pristupile jer su njihovi naslovi stranica ispravno pronađeni.

Sažetak

  • Poveznicama se pristupa pomoću metode click ().
  • Osim lokatora dostupnih za bilo koji WebElement, Linkovi imaju i lokatore koji se temelje na tekstu veza:
    • By.linkText () - pronalazi veze na temelju točnog podudaranja teksta veze navedenog kao parametar.
    • By.partialLinkText () - pronalazi veze na temelju djelomičnog podudaranja teksta teksta veze.
  • Oba navedena lokatora razlikuju velika i mala slova.
  • Ako postoji više podudaranja, By.linkText () i By.partialLinkText () odabrat će samo prvo podudaranje. U takvim slučajevima kada je prisutno više poveznica s istim tekstom veze, koriste se drugi lokatori temeljeni na xpath, CSS.
  • findElements () & By.tagName ("a") metoda pronalazi sve elemente na stranici koji odgovaraju kriterijima lokatora
  • Vezama mogu pristupiti By.linkText () i By.partialLinkText () bez obzira jesu li unutar ili izvan elemenata na razini bloka.