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.

  • 🔗 Länktext definierad: Lokaliserar hyperlänkar på en sida med hjälp av deras synliga ankartext.
  • 🎯 Av.länkText(): Matchar den exakta länktexten och returnerar den första matchningen.
  • 🔎 Av.partiellLänkText(): Matchar en del av länktexten och returnerar även den första matchningen.
  • 🔠 Skiftlägeskänsligt: Båda sökarna behandlar versaler som betydande, så ”egis” och ”EGIS” skiljer sig åt.
  • 🧱 Flera/blockerade länkar: För dubbletter, använd xpath eller cssSelector; båda metoderna fungerar både inuti och utanför blocktaggar.

Länktext och delvis länktext i Selenium

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

Länka text in Selenium–By.LinkText()

Länka text in Selenium–By.LinkText()

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

Länka text in Selenium–By.LinkText()

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-

Länka text in Selenium–By.LinkText()

Som ett resultat kommer du automatiskt att tas till Google.

Länka text in Selenium–By.LinkText()

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.

Delvis länktext in Selenium – By.partialLinkText()

 Delvis länktext in Selenium – By.partialLinkText()

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

 Delvis länktext in Selenium – By.partialLinkText()

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

Delvis länktext in Selenium – By.partialLinkText()

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

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.

Skiftlägeskänslighet för länktext

Ä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.

Skiftlägeskänslighet för länktext

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.

Länkar utanför och inuti ett block

Länkar utanför och inuti ett block

WebDriver-koden nedan får åtkomst till båda dessa länkar med By.partialLinkText()-metoden.

Länkar utanför och inuti ett block

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.

Vanliga frågor

By.linkText() matchar den fullständiga, exakta synliga texten i en länk, medan By.partialLinkText() matchar vilken länk som helst som innehåller en given delsträng. Båda returnerar endast den första matchande länken när flera länkar är kvalificerade.

Ja. Både By.linkText() och By.partialLinkText() är skiftlägeskänsliga, så versaler är viktiga. Texten ”egis” och ”EGIS” behandlas som olika värden och kan matcha olika länkar på samma sida.

Eftersom länktextsökare bara returnerar den första matchningen, använd By.xpath() eller By.cssSelector() för att rikta in dig på en specifik länk, eller använd findElements() med By.tagName("a") för att samla alla länkar och välja den du behöver.

AI-verktyg analyserar DOM och rangordnar attribut efter stabilitet för att föreslå robusta XPath- eller CSS-väljare. De gynnar unika, mindre spröda identifierare, vilket minskar fel orsakade av mindre UI-ändringar under testkörning.

Ja. Självläkande testramverk använder AI för att upptäcka när en lokaliseringsfunktion misslyckas, sedan poängsätta närliggande element efter likhet och automatiskt växla till den närmaste matchningen.ping tester som körs med mindre manuellt underhåll.

Sammanfatta detta inlägg med: