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.

  • 🔗 Defineret linktekst: Finder hyperlinks på en side ved hjælp af deres synlige ankertekst.
  • 🎯 Af.linkTekst(): Matcher den nøjagtige linktekst og returnerer det første match.
  • 🔎 Af.partialLinkText(): Matcher en del af linkteksten og returnerer også det første match.
  • 🔠 Store og små bogstaver: Begge lokatorer betragter store bogstaver som betydningsfulde, så "egis" og "EGIS" er forskellige.
  • 🧱 Flere/blokerede links: Brug xpath eller cssSelector til dubletter; begge metoder fungerer både inden for og uden for bloktags.

Linktekst og delvis linktekst i Selenium

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

Link tekst ind Selenium–By.LinkText()

Link tekst ind Selenium–By.LinkText()

Når du prøver at køre WebDriver-koden nedenfor, får du adgang til det første "klik her"-link

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

}

Her er hvordan det virker-

Link tekst ind Selenium–By.LinkText()

Som følge heraf vil du automatisk blive ført til Google.

Link tekst ind Selenium–By.LinkText()

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.

Delvis linktekst ind Selenium – By.partialLinkText()

 Delvis linktekst ind Selenium – By.partialLinkText()

Når du udfører WebDriver-koden nedenfor, vil du stadig blive ført til Google.

 Delvis linktekst ind 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 linktekst ind Selenium – By.partialLinkText()

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

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.

Store og små bogstaver for linktekst

Selvom begge links indeholder tegnsekvensen "egis", vil metoden "By.partialLinkText()" tilgå disse to links separat afhængigt af tegnenes store bogstaver. Se eksempelkoden nedenfor.

Store og små bogstaver for linktekst

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.

Links udenfor og inde i en blok

Links udenfor og inde i en blok

WebDriver-koden nedenfor giver adgang til begge disse links ved hjælp af By.partialLinkText()-metoden.

Links udenfor og inde i en blok

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.

Ofte Stillede Spørgsmål

By.linkText() matcher den komplette, nøjagtige synlige tekst i et link, mens By.partialLinkText() matcher ethvert link, der indeholder en given delstreng. Begge returnerer kun det første matchende link, når flere links kvalificerer.

Ja. Både By.linkText() og By.partialLinkText() skelner mellem store og små bogstaver, så brugen af ​​store bogstaver er vigtig. Teksten "egis" og "EGIS" behandles som forskellige værdier og kan matche forskellige links på den samme side.

Da linktekst-lokaliseringsværktøjer kun returnerer det første match, skal du bruge By.xpath() eller By.cssSelector() til at målrette mod et specifikt link, eller bruge findElements() med By.tagName("a") til at indsamle alle links og vælge det, du har brug for.

AI-værktøjer analyserer DOM'en og rangerer attributter efter stabilitet for at foreslå robuste XPath- eller CSS-selektorer. De favoriserer unikke, mindre skrøbelige identifikatorer, hvilket reducerer fejl forårsaget af mindre ændringer i brugergrænsefladen under testudførelse.

Ja. Selvreparerende testrammer bruger AI til at registrere, når en locator fejler, derefter score elementer i nærheden efter lighed og automatisk skifte til det nærmeste match.ping tests kører med mindre manuel vedligeholdelse.

Opsummer dette indlæg med: