Linktekst og delvis linktekst i Selenium
⚡ Smart opsummering
Linktekst og delvis linktekst i Selenium Find hyperlinks på en webside via deres ankertekst. By.linkText()-metoden matcher den nøjagtige tekst, mens By.partialLinkText() matcher en del, og begge locatorer skelner mellem store og små bogstaver og returnerer det første match.

Hvad er linktekst i Selenium?
A Link tekst ind Selenium bruges til at identificere hyperlinks på en webside. Det bestemmes ved hjælp af et ankermærke. Til oprettelse af hyperlinks på en webside kan vi bruge et ankertag efterfulgt af linket Tekst.
Links, der matcher et kriterium
Links kan tilgås ved at bruge et nøjagtigt eller delvist match af deres linktekst. Eksemplerne nedenfor giver scenarier, hvor flere matches ville eksistere, og forklarer, hvordan WebDriver ville håndtere dem.
I denne vejledning lærer vi de tilgængelige metoder til at finde og få adgang til links ved hjælp af Webdriver. Vi vil også diskutere nogle af de almindelige problemer, man står over for, når man får adgang til links, og vil yderligere diskutere, hvordan man løser dem.
Fuldfør linktekst ind Selenium – By.linkText()
Adgang til links ved hjælp af deres nøjagtige linktekst sker gennem By.linkText() metoden. Men hvis der er to links, der har den samme linktekst, vil denne metode kun få adgang til det første. Overvej HTML-koden nedenfor
Når du prøver at køre WebDriver-koden nedenfor, får du adgang til det første "klik her"-link
Code:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class MyClass { public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/link.html"; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get(baseUrl); driver.findElement(By.linkText("click here")).click(); System.out.println("title of page is: " + driver.getTitle()); driver.quit(); } }
Her er hvordan det virker-
Som følge heraf vil du automatisk blive ført til Google.
Komplet delvis linktekst ind Selenium – By.partialLinkText()
Adgang til links ved hjælp af en del af deres linktekst sker ved hjælp af By.partialLinkText() metode. Hvis du angiver en delvis linktekst, der har flere matches, vil kun den første match blive tilgået. Overvej HTML-koden nedenfor.
Når du udfører WebDriver-koden nedenfor, vil du stadig blive ført til Google.
Code:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class P1 { public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/accessing-link.html"; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get(baseUrl); driver.findElement(By.partialLinkText("here")).click(); System.out.println("Title of page is: " + driver.getTitle()); driver.quit(); } }
Sådan får du flere links med den samme linktekst
Så hvordan kan man omgå ovenstående problem? I tilfælde, hvor der er flere links med samme linktekst, og vi ønsker at få adgang til andre links end det første, hvordan gør vi det?
I sådanne tilfælde bruges der generelt forskellige locatorer, nemlig... By.xpath(), By.cssSelector() eller By.tagName().
Mest brugt er By.xpath(). Det er den mest pålidelige, men den ser også kompleks og ulæselig ud.
Store og små bogstaver for linktekst
Parametrene for By.linkText() og By.partialLinkText() er begge store og små, hvilket betyder, at brug af store og små bogstaver betyder noget. For eksempel i Mercury Tours' hjemmeside, der er to links, der indeholder teksten "egis" - det ene er "REGISTER"-linket i topmenuen, og det andet er "Tilmeld dig her"-linket nederst til højre på siden.
Selvom begge links indeholder tegnsekvensen "egis", vil metoden "By.partialLinkText()" tilgå disse to links separat afhængigt af tegnenes store bogstaver. Se eksempelkoden nedenfor.
Code
public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/newtours/"; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get(baseUrl); String theLinkText = driver.findElement(By .partialLinkText("egis")) .getText(); System.out.println(theLinkText); theLinkText = driver.findElement(By .partialLinkText("EGIS")) .getText(); System.out.println(theLinkText); driver.quit(); }
Links udenfor og inde i en blok
Den nyeste HTML5-standard gør det muligt at placere tags inden for og uden for tags på blokniveau som , , eller . Metoderne "By.linkText()" og "By.partialLinkText()" kan få adgang til et link placeret uden for og inde i disse blokniveauelementer. Overvej HTML-koden nedenfor.
WebDriver-koden nedenfor giver adgang til begge disse links ved hjælp af By.partialLinkText()-metoden.
Code:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class MyClass { public static void main(String[] args) { String baseUrl = "https://demo.guru99.com/test/block.html"; System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get(baseUrl); driver.findElement(By.partialLinkText("Inside")).click(); System.out.println(driver.getTitle()); driver.navigate().back(); driver.findElement(By.partialLinkText("Outside")).click(); System.out.println(driver.getTitle()); driver.quit(); } }
Outputtet ovenfor bekræfter, at begge links blev tilgået med succes, fordi deres respektive sidetitler blev hentet korrekt.


.png)
.png)

.png)
.png)
.png)
.png)
.png)

.png)
.png)
.png)
.png)
.png)