Linktekst en gedeeltelijke linktekst in Selenium

โšก Slimme samenvatting

Linktekst en gedeeltelijke linktekst in Selenium Zoek hyperlinks op een webpagina aan de hand van hun ankertekst. De methode By.linkText() zoekt naar de exacte tekst, terwijl By.partialLinkText() naar een gedeelte zoekt. Beide methoden zijn hoofdlettergevoelig en retourneren de eerste overeenkomst.

  • ๐Ÿ”— Linktekst gedefinieerd: Vindt hyperlinks op een pagina aan de hand van hun zichtbare ankertekst.
  • ๐ŸŽฏ By.linkText(): Zoekt naar de exacte linktekst en retourneert de eerste overeenkomst.
  • ๐Ÿ”Ž By.partialLinkText(): Komt overeen met een gedeelte van de linktekst en retourneert ook de eerste overeenkomst.
  • ๐Ÿ”  Hoofdlettergevoelig: Beide bronnen hechten veel waarde aan hoofdletters, waardoor "egis" en "EGIS" van elkaar verschillen.
  • ๐Ÿงฑ Meerdere/blokkoppelingen: Voor duplicaten kunt u xpath of cssSelector gebruiken; beide methoden werken binnen of buiten block-tags.

Linktekst en gedeeltelijke linktekst in Selenium

Waar zit linktekst in Selenium?

A Link tekst in Selenium wordt gebruikt om de hyperlinks op een webpagina te identificeren. Het wordt bepaald met behulp van een ankertag. Voor het maken van hyperlinks op een webpagina kunnen we een ankertag gebruiken, gevolgd door de link Tekst.

Links die voldoen aan een criterium

Links zijn toegankelijk via een exacte of gedeeltelijke overeenkomst van de linktekst. De onderstaande voorbeelden geven scenario's waarin er meerdere overeenkomsten zouden bestaan โ€‹โ€‹en leggen uit hoe WebDriver hiermee zou omgaan.

In deze tutorial leren we de beschikbare methoden om de links te vinden en te openen met behulp van Webdriver. Ook zullen we enkele van de veelvoorkomende problemen bespreken die u tegenkomt bij het openen van Links, en zullen we verder bespreken hoe u deze kunt oplossen.

Volledige linktekst in Selenium โ€“ Door.linkText()

Toegang krijgen tot links met behulp van hun exacte linktekst gebeurt via de By.linkText() methode. Als er echter twee links zijn die dezelfde linktekst hebben, heeft deze methode alleen toegang tot de eerste. Beschouw de onderstaande HTML-code

Tekst in linken Seleniumโ€“Door.LinkText()

Tekst in linken Seleniumโ€“Door.LinkText()

Wanneer u de onderstaande WebDriver-code probeert uit te voeren, krijgt u toegang tot de eerste 'klik hier'-link

Tekst in linken Seleniumโ€“Door.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();
    }

}

Hier is hoe het werkt-

Tekst in linken Seleniumโ€“Door.LinkText()

Hierdoor wordt u automatisch doorgestuurd naar Google.

Tekst in linken Seleniumโ€“Door.LinkText()

Voltooi de gedeeltelijke linktekst in Selenium โ€“ By.partialLinkText()

Toegang krijgen tot links met behulp van een deel van hun linktekst gebeurt met behulp van de Door.partialLinkText() methode. Als u een gedeeltelijke linktekst opgeeft die meerdere overeenkomsten heeft, wordt alleen de eerste overeenkomst geopend. Beschouw de onderstaande HTML-code.

Gedeeltelijke linktekst in Selenium โ€“ By.partialLinkText()

 Gedeeltelijke linktekst in Selenium โ€“ By.partialLinkText()

Als u de onderstaande WebDriver-code uitvoert, wordt u nog steeds doorgestuurd naar Google.

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

Gedeeltelijke linktekst in Selenium โ€“ By.partialLinkText()

Hoe u meerdere links met dezelfde linktekst kunt krijgen

Dus, hoe omzeil je het bovenstaande probleem? In gevallen waarin er meerdere links zijn met dezelfde linktekst en we toegang willen tot andere links dan de eerste, hoe gaan we dat dan doen?

In dergelijke gevallen worden doorgaans verschillende locators gebruikt, namelijk By.xpath(), By.cssSelector() of By.tagName().

Het meest gebruikt is By.xpath(). Dit is de meest betrouwbare, maar het ziet er complex en onleesbaar uit.

Hoofdlettergevoeligheid voor linktekst

Hoofdlettergevoeligheid voor linktekst

De parameters voor Door.linkText() en Door.partialLinkText() zijn beide hoofdlettergevoelig, wat betekent dat hoofdlettergebruik ertoe doet. Bijvoorbeeld, binnen Mercury Op de startpagina van Tours zijn er twee links die de tekst โ€œegisโ€ bevatten โ€“ de ene is de link โ€œREGISTRERENโ€ in het bovenste menu, en de andere is de link โ€œRegistreer hierโ€ rechtsonder op de pagina.

Hoofdlettergevoeligheid voor linktekst

Hoewel beide links de tekenreeks "egis" bevatten, zal de methode "By.partialLinkText()" deze twee links afzonderlijk benaderen, afhankelijk van het hoofdlettergebruik van de tekens. Zie de onderstaande voorbeeldcode.

Hoofdlettergevoeligheid voor 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 buiten en binnen een blok

Met de nieuwste HTML5-standaard kunnen tags binnen en buiten tags op blokniveau worden geplaatst, zoals , , of . De methoden โ€œBy.linkText()โ€ en โ€œBy.partialLinkText()โ€ hebben toegang tot een link die zich buiten en binnen deze elementen op blokniveau bevindt. Beschouw de onderstaande HTML-code.

Links buiten en binnen een blok

Links buiten en binnen een blok

De onderstaande WebDriver-code heeft toegang tot beide links met behulp van de By.partialLinkText()-methode.

Links buiten en binnen een 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();
    }
}

De bovenstaande uitvoer bevestigt dat beide links met succes zijn geopend omdat hun respectieve paginatitels correct zijn opgehaald.

Veelgestelde vragen

By.linkText() komt overeen met de volledige, exacte zichtbare tekst van een link, terwijl By.partialLinkText() overeenkomt met elke link die een bepaalde substring bevat. Beide retourneren alleen de eerste overeenkomende link wanneer meerdere links aan de criteria voldoen.

Ja. Zowel By.linkText() als By.partialLinkText() zijn hoofdlettergevoelig, dus het gebruik van hoofdletters is belangrijk. De tekst "egis" en "EGIS" worden als verschillende waarden beschouwd en kunnen overeenkomen met verschillende links op dezelfde pagina.

Omdat linktekstlocators alleen de eerste overeenkomst retourneren, kunt u By.xpath() of By.cssSelector() gebruiken om een โ€‹โ€‹specifieke link te selecteren, of findElements() met By.tagName("a") om alle links te verzamelen en de gewenste link te kiezen.

AI-tools analyseren de DOM en rangschikken attributen op basis van stabiliteit om robuuste XPath- of CSS-selectors voor te stellen. Ze geven de voorkeur aan unieke, minder kwetsbare identificatoren, waardoor fouten als gevolg van kleine UI-wijzigingen tijdens de testuitvoering worden verminderd.

Ja. Zelfherstellende testframeworks gebruiken AI om te detecteren wanneer een locator faalt, beoordelen vervolgens nabijgelegen elementen op basis van gelijkenis en schakelen automatisch over naar de dichtstbijzijnde overeenkomst.ping Tests verlopen met minder handmatig onderhoud.

Vat dit bericht samen met: