Zoek elementen door middel van linktekst & Gedeeltelijke linktekst in Selenium Webdriver

Inhoudsopgave:

Anonim

Wat is linktekst in selenium?

Een linktekst 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 Text.

Links die overeenkomen met een criterium

Links zijn toegankelijk door een exacte of gedeeltelijke overeenkomst met hun linktekst. De onderstaande voorbeelden bieden scenario's waarin meerdere overeenkomsten zouden bestaan ​​en zouden uitleggen hoe WebDriver daarmee zou omgaan.

In deze zelfstudie leren we de beschikbare methoden om links te vinden en te openen met Webdriver. We zullen ook enkele veelvoorkomende problemen bespreken waarmee u te maken krijgt bij het openen van links en zullen verder bespreken hoe deze kunnen worden opgelost.

Hier is wat je zult leren-

  • Toegang tot koppelingen met behulp van exacte tekstovereenkomst: By.linkText ()
  • Toegang tot koppelingen met behulp van gedeeltelijke tekstovereenkomst: By.partialLinkText ()
  • Hoe u meerdere links krijgt met dezelfde linktekst
  • Hoofdlettergevoeligheid voor linktekst
  • Links buiten en binnen een blok

Toegang tot koppelingen met behulp van exacte tekstovereenkomst: By.linkText ()

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

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

Code:

import org.openqa.selenium.By;importeer org.openqa.selenium.WebDriver;importeer org.openqa.selenium.chrome.ChromeDriver;openbare klas 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-stuurprogramma = nieuwe ChromeDriver ();driver.get (baseUrl);driver.findElement (By.linkText ("klik hier")). klik ();System.out.println ("titel van pagina is: + driver.getTitle ());driver.quit ();​​

Hier is hoe het werkt-

Als gevolg hiervan wordt u automatisch naar Google geleid.

Toegang tot koppelingen met behulp van gedeeltelijke tekstovereenkomst: By.partialLinkText ()

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

Wanneer u de onderstaande WebDriver-code uitvoert, wordt u nog steeds naar Google geleid.

Code:

import org.openqa.selenium.By;importeer org.openqa.selenium.WebDriver;importeer org.openqa.selenium.chrome.ChromeDriver;openbare 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-stuurprogramma = nieuwe ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("hier")). klik ();System.out.println ("Titel van pagina is: + driver.getTitle ());driver.quit ();​​

Hoe u meerdere links krijgt met dezelfde linktekst

Dus, hoe omzeil je het bovenstaande probleem? Als 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 over het algemeen verschillende locators gebruikt, namelijk ... By.xpath (), By.cssSelector () of By.tagName ().

De meest gebruikte is By.xpath (). Het is de meest betrouwbare, maar het ziet er ook ingewikkeld en onleesbaar uit.

Hoofdlettergevoeligheid voor linktekst

De parameters voor By.linkText () en By.partialLinkText () zijn beide hoofdlettergevoelig, wat betekent dat hoofdlettergebruik belangrijk is. Op de startpagina van Mercury Tours zijn er bijvoorbeeld twee links die de tekst 'egis' bevatten: de ene is de link 'REGISTREREN' in het bovenste menu en de andere is de link 'hier registreren' rechtsonder. van de pagina.

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

Code

public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver-stuurprogramma = nieuwe 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 de -tags binnen en buiten tags op blokniveau worden geplaatst, zoals

,

of

. De "By.linkText ()" en "By.partialLinkText ()" methoden hebben toegang tot een link die zich buiten en binnen deze blokniveau-elementen bevindt. Beschouw de onderstaande HTML-code.

De onderstaande WebDriver-code geeft toegang tot beide koppelingen met de methode By.partialLinkText ().

Code:

import org.openqa.selenium.By;importeer org.openqa.selenium.WebDriver;importeer org.openqa.selenium.chrome.ChromeDriver;openbare klas 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-stuurprogramma = nieuwe ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("Inside")). klik ();System.out.println (driver.getTitle ());driver.navigate (). terug ();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.

Overzicht

  • Koppelingen zijn toegankelijk met de methode click ().
  • Naast de locators die beschikbaar zijn voor elk WebElement, hebben Links ook op tekst gebaseerde locators:
    • By.linkText () - lokaliseert de koppelingen op basis van de exacte overeenkomst van de tekst van de koppeling die als parameter is opgegeven.
    • By.partialLinkText () - lokaliseert links op basis van de gedeeltelijke tekstovereenkomst met de tekst van de link.
  • Beide bovenstaande locators zijn hoofdlettergevoelig.
  • Als er meerdere overeenkomsten zijn, zullen By.linkText () en By.partialLinkText () alleen de eerste overeenkomst selecteren. In dergelijke gevallen waar meerdere links met dezelfde linktekst aanwezig zijn, worden andere locators op basis van xpath, CSS gebruikt.
  • findElements () & By.tagName ("a") methode vindt alle elementen op de pagina die overeenkomen met de locatorcriteria
  • Links zijn toegankelijk via By.linkText () en By.partialLinkText (), of ze nu binnen of buiten blokniveau-elementen zijn.