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.

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
Wenn Sie versuchen, den folgenden WebDriver-Code auszufรผhren, gelangen Sie zum ersten โHier klickenโ-Link
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:
Als Folge davon werden Sie automatisch weitergeleitet zu Google.
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.
Wenn Sie den unten stehenden WebDriver-Code ausfรผhren, werden Sie weiterhin zu Google.
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(); } }
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
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.
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.
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.
Der folgende WebDriver-Code greift mithilfe 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; 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.


.png)
.png)

.png)
.png)
.png)
.png)
.png)

.png)
.png)
.png)
.png)
.png)