Hitta element efter länktext & Partiell länktext i Selen Webdriver

Innehållsförteckning:

Anonim

Vad är länktext i selen?

En länktext i selen används för att identifiera hyperlänkar på en webbsida. Det bestäms med hjälp av en ankare. För att skapa hyperlänkar på en webbsida kan vi använda en ankartagg följt av länken Text.

Länkar som matchar ett kriterium

Länkar kan nås med en exakt eller delvis matchning av deras länktext. Exemplen nedan ger scenarier där flera matchningar skulle finnas och skulle förklara hur WebDriver skulle hantera dem.

I den här handledningen lär vi oss de tillgängliga metoderna för att hitta och komma åt länkarna med hjälp av Webdriver. Vi kommer också att diskutera några av de vanliga problemen som står inför när vi öppnar Länkar och kommer vidare att diskutera hur man löser dem.

Här är vad du kommer att lära dig-

  • Åtkomst till länkar med Exakt textmatchning: By.linkText ()
  • Åtkomst till länkar med partiell textmatchning: By.partialLinkText ()
  • Hur får man flera länkar med samma länktext
  • Skiftlägeskänslighet för länktext
  • Länkar utanför och inuti ett block

Åtkomst till länkar med Exakt textmatchning: By.linkText ()

Åtkomst till länkar med hjälp av deras exakta länktext görs genom metoden By.linkText () . Men om det finns två länkar som har samma länktext kommer den här metoden bara åt den första. Tänk på HTML-koden nedan

När du försöker köra WebDriver-koden nedan kommer du till den första "klicka här" -länken

Koda:

importera org.openqa.selenium.By;importera org.openqa.selenium.WebDriver;importera org.openqa.selenium.chrome.ChromeDriver;offentlig klass MyClass {public static void main (String [] args) {SträngbasUrl = "http://demo.guru99.com/test/link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver-drivrutin = ny ChromeDriver ();driver.get (baseUrl);driver.findElement (By.linkText ("klicka här")). klicka ();System.out.println ("sidans titel är: + driver.getTitle ());driver.quit ();}}

Så här fungerar det-

Som ett resultat kommer du automatiskt till Google.

Åtkomst till länkar med partiell textmatchning: By.partialLinkText ()

Åtkomst till länkar med en del av deras länktext görs med metoden By.partialLinkText () . Om du anger en partiell länktext som har flera matchningar kommer endast den första matchningen att visas. Tänk på HTML-koden nedan.

När du kör WebDriver-koden nedan kommer du fortfarande till Google.

Koda:

importera org.openqa.selenium.By;importera org.openqa.selenium.WebDriver;importera org.openqa.selenium.chrome.ChromeDriver;allmän klass 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");WebDriver-drivrutin = ny ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("här")). klicka ();System.out.println ("Sidans titel är: + driver.getTitle ());driver.quit ();}}

Hur får man flera länkar med samma länktext

Så hur kan man komma runt problemet ovan? I fall där det finns flera länkar med samma länktext och vi vill komma åt andra länkar än den första, hur ska vi göra det?

I sådana fall används i allmänhet olika lokaliserare, nämligen ... By.xpath (), By.cssSelector () eller By.tagName ().

Oftast används By.xpath (). Den är den mest pålitliga men den ser också komplex ut och är inte läsbar.

Skiftlägeskänslighet för länktext

Parametrarna för By.linkText () och By.partialLinkText () är båda skiftlägeskänsliga, vilket betyder att versaler betyder något. Till exempel på Mercury Tours hemsida finns det två länkar som innehåller texten "egis" - en är "REGISTER" -länken som finns i toppmenyn och den andra är "Registrera här" -länken som finns längst ner till höger på sidan.

Även om båda länkarna innehåller teckensekvensen "egis" är en "By.partialLinkText ()" -metoden för att komma åt dessa två länkar separat beroende på teckenstorlek. Se exempelkoden nedan.

Koda

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

Länkar utanför och inuti ett block

Med den senaste HTML5-standarden kan taggar placeras i och utanför taggar på blocknivå som

,

eller

. Metoderna "By.linkText ()" och "By.partialLinkText ()" kan komma åt en länk som ligger utanför och inuti dessa element på blocknivå. Tänk på HTML-koden nedan.

WebDriver-koden nedan öppnar båda dessa länkar med By.partialLinkText () -metoden.

Koda:

importera org.openqa.selenium.By;importera org.openqa.selenium.WebDriver;importera org.openqa.selenium.chrome.ChromeDriver;offentlig klass MyClass {public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/block.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver-drivrutin = ny ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("Inside")). klicka ();System.out.println (driver.getTitle ());driver.navigate (). tillbaka ();driver.findElement (By.partialLinkText ("Outside")). klicka ();System.out.println (driver.getTitle ());driver.quit ();}}

Utdata ovan bekräftar att båda länkarna har nått framgångsrikt eftersom deras respektive sidtitlar hämtades korrekt.

Sammanfattning

  • Länkar nås med klickmetoden ().
  • Förutom lokaliserarna som är tillgängliga för alla WebElement, har länkar också länktextbaserade lokaliserare:
    • By.linkText () - lokaliserar länkarna baserat på den exakta matchningen av länkens text som tillhandahålls som en parameter.
    • By.partialLinkText () - lokaliserar länkar baserat på partiell textmatchning av länkens text.
  • Båda ovanstående lokaliserare är skiftlägeskänsliga.
  • Om det finns flera matchningar väljer By.linkText () och By.partialLinkText () bara den första matchningen. I sådana fall där flera länkar med samma länktext finns, används andra lokaliserare baserade på xpath, CSS.
  • metoden findElements () & By.tagName ("a") hittar alla element på sidan som matchar sökarkriterierna
  • Länkar kan nås av By.linkText () och By.partialLinkText () oavsett om de finns inom eller utanför blocknivåelement.