Elemente nach Linktext suchen & Partial Link Text in Selenium Webdriver

Inhaltsverzeichnis:

Anonim

Was ist Linktext in Selen?

Ein Linktext in Selenium wird verwendet, um die Hyperlinks auf einer Webseite zu identifizieren. Sie wird mit Hilfe eines Ankertags ermittelt. Zum Erstellen der Hyperlinks auf einer Webseite können wir ein Ankertag gefolgt vom Link Text verwenden.

Links, die einem Kriterium entsprechen

Auf Links kann zugegriffen werden, indem der Linktext exakt oder teilweise übereinstimmt. Die folgenden Beispiele bieten Szenarien, in denen mehrere Übereinstimmungen vorhanden wären, und erläutern, wie WebDriver mit ihnen umgehen würde.

In diesem Tutorial lernen wir die verfügbaren Methoden zum Suchen und Zugreifen auf die Links mit Webdriver kennen. Außerdem werden wir einige der häufigsten Probleme beim Zugriff auf Links erörtern und weiter erläutern, wie sie behoben werden können.

Folgendes werden Sie lernen:

  • Zugriff auf Links mit Exact Text Match: By.linkText ()
  • Zugreifen auf Links mit Partial Text Match: By.partialLinkText ()
  • So erhalten Sie mehrere Links mit demselben Linktext
  • Groß- und Kleinschreibung für Linktext
  • Links außerhalb und innerhalb eines Blocks

Zugriff auf Links mit Exact Text Match: By.linkText ()

Der Zugriff auf Links mit ihrem genauen Linktext erfolgt über die By.linkText () -Methode . Wenn jedoch zwei Links denselben Linktext haben, greift diese Methode nur auf den ersten zu. Betrachten Sie den folgenden HTML-Code

Wenn Sie versuchen, den folgenden WebDriver-Code auszuführen, greifen Sie auf den ersten Link "Hier klicken" zu

Code:

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;öffentliche Klasse MyClass {public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver-Treiber = neuer ChromeDriver ();driver.get (baseUrl);driver.findElement (By.linkText ("hier klicken")). click ();System.out.println ("Titel der Seite ist: + driver.getTitle ());driver.quit ();}}}}

So funktioniert es:

Infolgedessen werden Sie automatisch zu Google weitergeleitet.

Zugreifen auf Links mit Partial Text Match: By.partialLinkText ()

Der Zugriff auf Links über einen Teil ihres Linktextes erfolgt mit der By.partialLinkText () -Methode. Wenn Sie einen Teilverknüpfungstext mit mehreren Übereinstimmungen angeben, wird nur auf die erste Übereinstimmung zugegriffen. Betrachten Sie den folgenden HTML-Code.

Wenn Sie den folgenden WebDriver-Code ausführen, werden Sie weiterhin zu Google weitergeleitet.

Code:

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;öffentliche Klasse P1 {public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/accessing-link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver-Treiber = neuer ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("hier")). click ();System.out.println ("Titel der Seite ist: + driver.getTitle ());driver.quit ();}}}}

So erhalten Sie mehrere Links mit demselben Linktext

Wie kann man das oben genannte Problem umgehen? Wie gehen wir vor, wenn mehrere Links mit demselben Linktext vorhanden sind 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. Es ist das zuverlässigste, sieht aber auch komplex und nicht lesbar aus.

Groß- und Kleinschreibung für Linktext

Bei den Parametern für By.linkText () und By.partialLinkText () wird zwischen Groß- und Kleinschreibung unterschieden, was bedeutet, dass die Großschreibung wichtig ist. Auf der Homepage von Mercury Tours gibt es beispielsweise zwei Links, die den Text "egis" enthalten - einer ist der Link "REGISTRIEREN" im oberen Menü und der andere der Link "Hier registrieren" im unteren rechten Bereich der Seite.

Obwohl beide Links die Zeichenfolge "egis" enthalten, greift die Methode "By.partialLinkText ()" abhängig von der Groß- und Kleinschreibung der Zeichen getrennt auf diese beiden Links zu. Siehe den folgenden Beispielcode.

Code

public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver-Treiber = neuer 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 das Platzieren 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.

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

Code:

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;öffentliche Klasse MyClass {public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/block.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver-Treiber = neuer 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 die jeweiligen Seitentitel korrekt abgerufen wurden.

Zusammenfassung

  • Auf Links wird mit der click () -Methode zugegriffen.
  • Neben den für jedes WebElement verfügbaren Locators verfügen Links auch über Linktext-basierte Locators:
    • By.linkText () - Findet die Links basierend auf der genauen Übereinstimmung des als Parameter bereitgestellten Linktextes.
    • By.partialLinkText () - Findet Links basierend auf der partiellen Textübereinstimmung des Linktextes.
  • Beide oben genannten Locators unterscheiden zwischen Groß- und Kleinschreibung.
  • Bei mehreren Übereinstimmungen wählen By.linkText () und By.partialLinkText () nur die erste Übereinstimmung aus. In solchen Fällen, in denen mehrere Links mit demselben Linktext vorhanden sind, werden andere auf xpath, CSS basierende Locators verwendet.
  • Die Methode findElements () & By.tagName ("a") findet alle Elemente auf der Seite, die den Locator-Kriterien entsprechen
  • Auf Links kann mit By.linkText () und By.partialLinkText () zugegriffen werden, unabhängig davon, ob sie sich innerhalb oder außerhalb von Elementen auf Blockebene befinden.