Länktext och delvis länktext i Selenium
⚡ Smart sammanfattning
Länktext och delvis länktext i Selenium hitta hyperlänkar på en webbsida via deras ankartext. Metoden By.linkText() matchar den exakta texten, medan By.partialLinkText() matchar en del, och båda sökarna är skiftlägeskänsliga och returnerar den första matchningen.

Vad är länktext i Selenium?
A Länka text in Selenium används för att identifiera hyperlänkarna på en webbsida. Det bestäms med hjälp av en ankarlapp. För att skapa hyperlänkarna 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 genom att exakt eller delvis matcha deras länktext. Exemplen nedan ger scenarier där flera matchningar skulle existera och skulle förklara hur WebDriver skulle hantera dem.
I den här handledningen kommer vi att lära 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 möter när du använder länkar och kommer att diskutera vidare hur man löser dem.
Komplett länktext in Selenium – By.linkText()
Åtkomst till länkar med deras exakta länktext görs genom By.linkText()-metoden. 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 åt den första "klicka här"-länken
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(); } }
Så här fungerar det-
Som ett resultat kommer du automatiskt att tas till Google.
Komplett partiell länktext in Selenium – By.partialLinkText()
Att komma åt länkar med en del av deras länktext görs med hjälp av By.partialLinkText() metod. Om du anger en dellänktext som har flera matchningar, kommer endast den första matchningen att nås. Tänk på HTML-koden nedan.
När du kör WebDriver-koden nedan kommer du fortfarande att tas till 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(); } }
Hur man får flera länkar med samma länktext
Så, hur kan man komma runt ovanstående problem? I de 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 går vi tillväga?
I sådana fall används i allmänhet olika lokaliseringsorgan, nämligen... By.xpath(), By.cssSelector() eller By.tagName().
Vanligast är By.xpath(). Det är den mest tillförlitliga men den ser också komplex och oläsbar ut.
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 är viktiga. Till exempel i Mercury Tours hemsida, det finns två länkar som innehåller texten "egis" - den ena är "REGISTRERA"-länken som finns i toppmenyn, och den andra är "Registrera dig här"-länken som finns längst ner till höger på sidan.
Även om båda länkarna innehåller teckensekvensen "egis", kommer metoden "By.partialLinkText()" att komma åt dessa två länkar separat beroende på tecknens versaler. Se exempelkoden nedan.
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(); }
Länkar utanför och inuti ett block
Den senaste HTML5-standarden tillåter att taggarna placeras inuti och utanför blocknivåtaggar som , , eller . Metoderna "By.linkText()" och "By.partialLinkText()" kan komma åt en länk utanför och inuti dessa blocknivåelement. Tänk på HTML-koden nedan.
WebDriver-koden nedan får åtkomst till båda dessa länkar med 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(); } }
Utdata ovan bekräftar att båda länkarna nåddes framgångsrikt eftersom deras respektive sidtitlar hämtades korrekt.


.png)
.png)

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

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