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: