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