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 ();}