Finn elementer etter lenketekst & Delvis lenketekst i Selen Webdriver

Innholdsfortegnelse:

Anonim

Hva er lenketekst i selen?

En lenketekst i selen brukes til å identifisere hyperkoblingene på en webside. Det bestemmes ved hjelp av et ankermerke. For å lage hyperkoblingene på en webside kan vi bruke en ankerkode etterfulgt av lenken Tekst.

Koblinger som samsvarer med et kriterium

Du kan få tilgang til koblinger ved å bruke en nøyaktig eller delvis samsvar av koblingsteksten. Eksemplene nedenfor gir scenarier der flere treff ville eksistert og ville forklare hvordan WebDriver ville håndtere dem.

I denne opplæringen lærer vi de tilgjengelige metodene for å finne og få tilgang til koblingene ved hjelp av Webdriver. Vi vil også diskutere noen av de vanlige problemene som står overfor mens du åpner koblinger, og vil diskutere videre hvordan du løser dem.

Dette er hva du vil lære -

  • Få tilgang til lenker ved hjelp av nøyaktig tekstmatch: By.linkText ()
  • Få tilgang til lenker ved å bruke Partial Text Match: By.partialLinkText ()
  • Hvordan få flere lenker med samme koblingstekst
  • Saksfølsomhet for lenketekst
  • Koblinger utenfor og inne i en blokk

Få tilgang til lenker ved hjelp av nøyaktig tekstmatch: By.linkText ()

Å få tilgang til lenker ved hjelp av deres eksakte koblingstekst gjøres via By.linkText () -metoden . Imidlertid, hvis det er to lenker som har den samme koblingsteksten, vil denne metoden bare få tilgang til den første. Tenk på HTML-koden nedenfor

Når du prøver å kjøre WebDriver-koden nedenfor, får du tilgang til den første "klikk her" -linken

Kode:

importer org.openqa.selenium.By;importer org.openqa.selenium.WebDriver;importer org.openqa.selenium.chrome.ChromeDriver;offentlig klasse MyClass {public static void main (String [] args) {Streng baseUrl = "http://demo.guru99.com/test/link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver driver = ny ChromeDriver ();driver.get (baseUrl);driver.findElement (By.linkText ("klikk her")). klikk ();System.out.println ("tittel på siden er: + driver.getTitle ());driver.quit ();}}

Slik fungerer det -

Som et resultat blir du automatisk ført til Google.

Få tilgang til lenker ved å bruke Partial Text Match: By.partialLinkText ()

Å få tilgang til lenker ved hjelp av en del av koblingsteksten gjøres ved hjelp av By.partialLinkText () -metoden. Hvis du spesifiserer en delvis lenketekst som har flere treff, vil bare den første kampen få tilgang. Tenk på HTML-koden nedenfor.

Når du kjører WebDriver-koden nedenfor, blir du fortsatt ført til Google.

Kode:

importer org.openqa.selenium.By;importer org.openqa.selenium.WebDriver;importer org.openqa.selenium.chrome.ChromeDriver;offentlig klasse P1 {public static void main (String [] args) {Streng baseUrl = "http://demo.guru99.com/test/accessing-link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver driver = ny ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("her")). klikk ();System.out.println ("Tittelen på siden er: + driver.getTitle ());driver.quit ();}}

Hvordan få flere lenker med samme koblingstekst

Så hvordan kommer du rundt problemet ovenfor? I tilfeller der det er flere lenker med samme lenketekst, og vi ønsker å få tilgang til andre koblinger enn den første, hvordan skal vi gjøre om det?

I slike tilfeller brukes vanligvis forskjellige lokaliseringer, nemlig ... By.xpath (), By.cssSelector () eller By.tagName ().

Mest brukt er By.xpath (). Den er den mest pålitelige, men den ser også kompleks ut og ikke lesbar.

Saksfølsomhet for lenketekst

Parametrene for By.linkText () og By.partialLinkText () er begge store og små bokstaver, noe som betyr at store og små bokstaver betyr noe. For eksempel på Mercury Tours hjemmeside er det to lenker som inneholder teksten "egis" - den ene er "REGISTER" -linken som er funnet i toppmenyen, og den andre er "Registrer her" -linken nederst til høyre på siden.

Selv om begge koblingene inneholder tegnsekvensen "egis", er den ene "By.partialLinkText ()" -metoden, slik at du får tilgang til disse to koblingene hver for seg, avhengig av tegnene. Se eksempelkoden nedenfor.

Kode

public static void main (String [] args) {Streng baseUrl = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver driver = 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 ();}

Koblinger utenfor og inne i en blokk

Den siste HTML5-standarden gjør at -kodene kan plasseres innenfor og utenfor koder på blokknivå som

,

eller

. Metodene "By.linkText ()" og "By.partialLinkText ()" kan få tilgang til en lenke utenfor og inne i disse blokknivåelementene. Tenk på HTML-koden nedenfor.

WebDriver-koden nedenfor har tilgang til begge disse koblingene ved hjelp av By.partialLinkText () -metoden.

Kode:

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

Utdataene ovenfor bekrefter at begge lenkene ble åpnet vellykket fordi de respektive sidetitlene ble hentet riktig.

Sammendrag

  • Du får tilgang til koblinger ved å klikke () -metoden.
  • Bortsett fra lokalisatorene som er tilgjengelige for ethvert WebElement, har koblinger også tekstbaserte lokaliseringer:
    • By.linkText () - lokaliserer koblingene basert på nøyaktig samsvar med koblingens tekst som er gitt som parameter.
    • By.partialLinkText () - lokaliserer koblinger basert på delvis tekstmatching av koblingens tekst.
  • Begge de ovennevnte lokalisatorene er store og små bokstaver
  • Hvis det er flere treff, velger By.linkText () og By.partialLinkText () bare den første kampen. I slike tilfeller hvor flere lenker med samme lenketekst er til stede, brukes andre lokaliseringer basert på xpath, CSS.
  • findElements () & By.tagName ("a") -metoden finner alle elementene på siden som samsvarer med søkekriteriene
  • Koblinger er tilgjengelige via By.linkText () og By.partialLinkText () enten de befinner seg i eller utenfor elementer på blokknivå.