Poišči elemente po besedilu povezave & Besedilo delne povezave v programu Selenium Webdriver

Kazalo:

Anonim

Kaj je besedilo povezav v selenu?

Link Besedilo v Selen se uporablja za identifikacijo hiperpovezave na spletni strani. Določi se s pomočjo sidrne oznake. Za ustvarjanje hiperpovezav na spletni strani lahko uporabimo sidrno oznako, ki ji sledi povezava Besedilo.

Povezave, ki se ujemajo z merilom

Do povezav je mogoče dostopati z natančnim ali delnim ujemanjem besedila njihove povezave. Spodnji primeri ponujajo scenarije, v katerih bi obstajalo več ujemanj, in pojasnjujejo, kako bi se WebDriver ukvarjal z njimi.

V tej vadnici bomo spoznali razpoložljive metode za iskanje in dostop do povezav s pomočjo Webdriverja. Razpravljali bomo tudi o nekaterih pogostih težavah, s katerimi se srečujemo pri dostopu do Povezav, in o tem, kako jih rešiti.

Tukaj se boste naučili-

  • Dostop do povezav z natančnim ujemanjem besedila: By.linkText ()
  • Dostop do povezav z uporabo delnega ujemanja besedila: By.partialLinkText ()
  • Kako dobiti več povezav z istim besedilom povezave
  • Razlikovanje velikih in malih črk za besedilo povezave
  • Povezave zunaj in znotraj bloka

Dostop do povezav z natančnim ujemanjem besedila: By.linkText ()

Dostopanje do povezav z natančnim besedilom povezav poteka prek metode By.linkText () . Če pa obstajata dve povezavi z enakim besedilom povezave, bo ta metoda dostopala samo do prve. Upoštevajte spodnjo kodo HTML

Ko poskusite zagnati spodnjo kodo WebDriver, boste odprli prvo povezavo "kliknite tukaj"

Koda:

uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.chrome.ChromeDriver;javni razred MyClass {public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Gonilnik WebDriver = nov ChromeDriver ();driver.get (baseUrl);driver.findElement (By.linkText ("kliknite tukaj")). click ();System.out.println ("naslov strani je: + driver.getTitle ());driver.quit ();}}

Tukaj je, kako to deluje -

Posledično boste samodejno preusmerjeni v Google.

Dostop do povezav z uporabo delnega ujemanja besedila: By.partialLinkText ()

Dostopanje do povezav z delom njihovega besedila povezav poteka z metodo By.partialLinkText () . Če določite delno besedilo povezave, ki ima več zadetkov, bo dostopno le do prvega ujemanja. Upoštevajte spodnjo kodo HTML.

Ko zaženete spodnjo kodo WebDriver, boste še vedno preusmerjeni v Google.

Koda:

uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.chrome.ChromeDriver;javni razred 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");Gonilnik WebDriver = nov ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("tukaj")). click ();System.out.println ("Naslov strani je: + driver.getTitle ());driver.quit ();}}

Kako dobiti več povezav z istim besedilom povezave

Torej, kako rešiti zgornjo težavo? Če gre za več povezav z istim besedilom povezave in želimo dostopati do povezav, ki niso prva, kako to storiti?

V takih primerih se običajno uporabljajo različni lokatorji, in sicer ... By.xpath (), By.cssSelector () ali By.tagName ().

Najpogosteje se uporablja By.xpath (). Je najbolj zanesljiv, vendar je videti tudi zapleten in neberljiv.

Razlikovanje velikih in malih črk za besedilo povezave

Parametra za By.linkText () in By.partialLinkText () sta oba občutljiva na velike in male črke, kar pomeni, da je uporaba velikih začetnic pomembna. Na domači strani Mercury Tours sta na primer dve povezavi, ki vsebujeta besedilo "egis" - ena je povezava "REGISTER" v zgornjem meniju, druga pa povezava "Registriraj se tukaj" v spodnjem desnem delu strani.

Čeprav obe povezavi vsebujeta zaporedje znakov "egis", je metoda metoda "By.partialLinkText ()" do teh dveh povezav ločena, odvisno od velikih začetnic. Glejte spodnjo vzorčno kodo.

Koda

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

Povezave zunaj in znotraj bloka

Najnovejši standard HTML5 omogoča, da se oznake namestijo znotraj in zunaj oznak na ravni bloka, kot so

,

ali

. Metodi "By.linkText ()" in "By.partialLinkText ()" lahko dostopata do povezave, ki se nahaja zunaj in znotraj teh elementov na ravni bloka. Upoštevajte spodnjo kodo HTML.

Spodnja koda WebDriver dostopa do obeh povezav z metodo By.partialLinkText ().

Koda:

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

Zgornji rezultat potrjuje, da sta bili do obeh povezav uspešno dostopni, ker so bili naslovi njihovih strani pravilno pridobljeni.

Povzetek

  • Do povezav se dostopa po metodi click ().
  • Poleg lokatorjev, ki so na voljo za kateri koli WebElement, imajo povezave tudi lokatorje, ki temeljijo na besedilu povezav:
    • By.linkText () - poišče povezave na podlagi natančnega ujemanja besedila povezave, navedenega kot parameter.
    • By.partialLinkText () - poišče povezave na podlagi delnega ujemanja besedila besedila povezave.
  • Oba zgornja lokatorja razlikujeta med velikimi in malimi črkami.
  • Če je ujemanj več, bosta By.linkText () in By.partialLinkText () izbrala samo prvo ujemanje. V takih primerih, ko je prisotnih več povezav z istim besedilom povezave, se uporabljajo drugi lokatorji, ki temeljijo na xpath, CSS.
  • findElements () & By.tagName ("a") metoda poišče vse elemente na strani, ki ustrezajo merilom lokatorja
  • Do povezav lahko dostopata By.linkText () in By.partialLinkText (), ne glede na to, ali so znotraj ali zunaj elementov na ravni bloka.