Linktext und Teillinktext in Selenium

โšก Intelligente Zusammenfassung

Linktext und Teillinktext in Selenium Finden Sie Hyperlinks auf einer Webseite anhand ihres Ankertextes. Die Methode `By.linkText()` findet den exakten Text, wรคhrend `By.partialLinkText()` einen Teil davon findet. Beide Methoden unterscheiden zwischen GroรŸ- und Kleinschreibung und geben den ersten Treffer zurรผck.

  • ๐Ÿ”— Linktext definiert: Findet Hyperlinks auf einer Seite anhand ihres sichtbaren Ankertextes.
  • ๐ŸŽฏ By.linkText(): Findet den exakten Linktext und gibt den ersten Treffer zurรผck.
  • ๐Ÿ”Ž By.partialLinkText(): Passt an einen Teil des Linktextes an und gibt auch den ersten Treffer zurรผck.
  • ๐Ÿ”  GroรŸ-/Kleinschreibung beachten: Beide Anbieter legen Wert auf GroรŸ- und Kleinschreibung, daher unterscheiden sich โ€žegisโ€œ und โ€žEGISโ€œ.
  • ๐Ÿงฑ Mehrfach-/Blockverbindungen: Fรผr Duplikate verwenden Sie XPath oder CSS-Selektor; beide Methoden funktionieren innerhalb und auรŸerhalb von Block-Tags.

Linktext und Teillinktext in Selenium

Was ist Linktext? Selenium?

A Text verlinken Selenium wird verwendet, um die Hyperlinks auf einer Webseite zu identifizieren. Die Ermittlung erfolgt mit Hilfe eines Ankertags. Zum Erstellen der Hyperlinks auf einer Webseite kรถnnen wir ein Anker-Tag gefolgt vom Linktext verwenden.

Links, die einem Kriterium entsprechen

Auf Links kann รผber eine exakte oder teilweise รœbereinstimmung ihres Linktextes zugegriffen werden. Die folgenden Beispiele stellen Szenarien dar, in denen mehrere รœbereinstimmungen vorhanden wรคren, und erlรคutern, wie WebDriver damit umgehen wรผrde.

In diesem Tutorial lernen wir die verfรผgbaren Methoden kennen, um die Links mithilfe von Webdriver zu finden und darauf zuzugreifen. AuรŸerdem werden wir einige der hรคufigsten Probleme besprechen, die beim Zugriff auf Links auftreten, und weiter darรผber diskutieren, wie diese behoben werden kรถnnen.

Vervollstรคndigen Sie den Linktext in Selenium โ€“ By.linkText()

Der Zugriff auf Links รผber ihren genauen Linktext erfolgt รผber die Methode By.linkText(). Wenn es jedoch zwei Links gibt, die den gleichen Linktext haben, greift diese Methode nur auf den ersten zu. Betrachten Sie den folgenden HTML-Code

Text verknรผpfen Seleniumโ€“By.LinkText()

Text verknรผpfen Seleniumโ€“By.LinkText()

Wenn Sie versuchen, den folgenden WebDriver-Code auszufรผhren, gelangen Sie zum ersten โ€žHier klickenโ€œ-Link

Text verknรผpfen 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();
    }

}

So funktioniert es:

Text verknรผpfen Seleniumโ€“By.LinkText()

Als Folge davon werden Sie automatisch weitergeleitet zu Google.

Text verknรผpfen Seleniumโ€“By.LinkText()

Vervollstรคndigen Sie den teilweisen Linktext in Selenium โ€“ By.partialLinkText()

Der Zugriff auf Links รผber einen Teil ihres Linktextes erfolgt รผber die By.partialLinkText() Methode. Wenn Sie einen teilweisen Linktext angeben, der mehrere รœbereinstimmungen aufweist, wird nur auf die erste รœbereinstimmung zugegriffen. Betrachten Sie den folgenden HTML-Code.

Teilweiser Linktext eingefรผgt Selenium โ€“ By.partialLinkText()

 Teilweiser Linktext eingefรผgt Selenium โ€“ By.partialLinkText()

Wenn Sie den unten stehenden WebDriver-Code ausfรผhren, werden Sie weiterhin zu Google.

 Teilweiser Linktext eingefรผgt 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();
    }
}

Teilweiser Linktext eingefรผgt Selenium โ€“ By.partialLinkText()

So erhalten Sie mehrere Links mit demselben Linktext

Wie kann man also das oben genannte Problem umgehen? Wie gehen wir vor, wenn es mehrere Links mit demselben Linktext gibt und wir auf andere Links als den ersten zugreifen mรถchten?

In solchen Fรคllen werden im Allgemeinen verschiedene Locators verwendet, nรคmlich By.xpath(), By.cssSelector() oder By.tagName().

Am hรคufigsten wird By.xpath() verwendet. Dies ist die zuverlรคssigste Methode, sieht aber komplex aus und ist zudem nicht lesbar.

GroรŸ-/Kleinschreibung beim Linktext beachten

GroรŸ- und Kleinschreibung fรผr Linktext

Die Parameter fรผr By.linkText() und By.partialLinkText() sind beide case-sensitiv, das heiรŸt, die GroรŸ- und Kleinschreibung ist wichtig. Zum Beispiel in Mercury Auf der Homepage von Tours gibt es zwei Links, die den Text โ€žegisโ€œ enthalten โ€“ einer ist der Link โ€žREGISTRIERENโ€œ im oberen Menรผ und der andere ist der Link โ€žHier registrierenโ€œ im unteren rechten Teil der Seite.

GroรŸ- und Kleinschreibung fรผr Linktext

Obwohl beide Links die Zeichenfolge โ€žegisโ€œ enthalten, greift die Methode โ€žBy.partialLinkText()โ€œ je nach GroรŸ- und Kleinschreibung der Zeichen separat auf diese beiden Links zu. Siehe den unten stehenden Beispielcode.

GroรŸ- und Kleinschreibung fรผr Linktext

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 auรŸerhalb und innerhalb eines Blocks

Der neueste HTML5-Standard ermรถglicht die Platzierung der Tags innerhalb und auรŸerhalb von Tags auf Blockebene wie , oder . Die Methoden โ€žBy.linkText()โ€œ und โ€žBy.partialLinkText()โ€œ kรถnnen auf einen Link zugreifen, der sich auรŸerhalb und innerhalb dieser Elemente auf Blockebene befindet. Betrachten Sie den folgenden HTML-Code.

Links auรŸerhalb und innerhalb eines Blocks

Links auรŸerhalb und innerhalb eines Blocks

Der folgende WebDriver-Code greift mithilfe der By.partialLinkText()-Methode auf diese beiden Links zu.

Links auรŸerhalb und innerhalb eines Blocks

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

Die obige Ausgabe bestรคtigt, dass auf beide Links erfolgreich zugegriffen wurde, da ihre jeweiligen Seitentitel korrekt abgerufen wurden.

Hรคufig gestellte Fragen

By.linkText() findet den vollstรคndigen, exakten sichtbaren Text eines Links, wรคhrend By.partialLinkText() jeden Link findet, der eine bestimmte Teilzeichenkette enthรคlt. Beide geben nur den ersten passenden Link zurรผck, wenn mehrere Links in Frage kommen.

Ja. Sowohl By.linkText() als auch By.partialLinkText() unterscheiden zwischen GroรŸ- und Kleinschreibung, daher ist die GroรŸ-/Kleinschreibung wichtig. Die Texte โ€žegisโ€œ und โ€žEGISโ€œ werden als unterschiedliche Werte behandelt und kรถnnen auf unterschiedliche Links auf derselben Seite verweisen.

Da Linktext-Locators nur den ersten Treffer zurรผckgeben, verwenden Sie By.xpath() oder By.cssSelector(), um einen bestimmten Link anzusprechen, oder verwenden Sie findElements() mit By.tagName(โ€œaโ€), um alle Links zu sammeln und den benรถtigten auszuwรคhlen.

KI-Tools analysieren das DOM und ordnen Attribute nach Stabilitรคt, um robuste XPath- oder CSS-Selektoren vorzuschlagen. Sie bevorzugen eindeutige, weniger fehleranfรคllige Bezeichner und reduzieren so Fehler, die durch geringfรผgige UI-ร„nderungen wรคhrend der Testausfรผhrung verursacht werden.

Ja. Selbstheilende Testframeworks nutzen KI, um Fehler bei der Lokalisierung zu erkennen, bewerten dann nahegelegene Elemente anhand ihrer ร„hnlichkeit und wechseln automatisch zum รคhnlichsten Element.ping Tests, die mit weniger manuellem Wartungsaufwand durchgefรผhrt werden.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: