Linktekst en gedeeltelijke linktekst in Selenium

Waar zit linktekst in Selenium?

A Link tekst 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 Tekst.

Links die voldoen aan een criterium

Links zijn toegankelijk via een exacte of gedeeltelijke overeenkomst van de linktekst. De onderstaande voorbeelden geven scenario's waarin er meerdere overeenkomsten zouden bestaan โ€‹โ€‹en leggen uit hoe WebDriver hiermee zou omgaan.

In deze tutorial leren we de beschikbare methoden om de links te vinden en te openen met behulp van Webdriver. Ook zullen we enkele van de veelvoorkomende problemen bespreken die u tegenkomt bij het openen van Links, en zullen we verder bespreken hoe u deze kunt oplossen.

Volledige linktekst in Selenium โ€“ Door.linkText()

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

Tekst in linken Seleniumโ€“Door.LinkText()

Tekst in linken Seleniumโ€“Door.LinkText()

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

Tekst in linken Seleniumโ€“Door.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();			
    }		

}			

Hier is hoe het werkt-

Tekst in linken Seleniumโ€“Door.LinkText()

Hierdoor wordt u automatisch doorgestuurd naar Google.

Tekst in linken Seleniumโ€“Door.LinkText()

Voltooi de gedeeltelijke linktekst in Selenium โ€“ By.partialLinkText()

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

Gedeeltelijke linktekst in Selenium โ€“ By.partialLinkText()

 Gedeeltelijke linktekst in Selenium โ€“ By.partialLinkText()

Als u de onderstaande WebDriver-code uitvoert, wordt u nog steeds doorgestuurd naar Google.

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

Gedeeltelijke linktekst in Selenium โ€“ By.partialLinkText()

Hoe u meerdere links met dezelfde linktekst kunt krijgen

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

Het meest gebruikt is By.xpath(). Dit is de meest betrouwbare, maar het ziet er complex en onleesbaar uit.

Hoofdlettergevoeligheid voor linktekst

Hoofdlettergevoeligheid voor linktekst

De parameters voor Door.linkText() en Door.partialLinkText() zijn beide hoofdlettergevoelig, wat betekent dat hoofdlettergebruik ertoe doet. Bijvoorbeeld, binnen Mercury Op de startpagina van Tours zijn er twee links die de tekst โ€œegisโ€ bevatten โ€“ de ene is de link โ€œREGISTRERENโ€ in het bovenste menu, en de andere is de link โ€œRegistreer hierโ€ rechtsonder op de pagina.

Hoofdlettergevoeligheid voor linktekst

Hoewel beide links de tekenreeks โ€œegisโ€ bevatten, is er รฉรฉn die met de โ€œBy.partialLinkText()โ€-methode afzonderlijk toegang krijgt tot deze twee links, afhankelijk van het hoofdlettergebruik van de karakters. Zie de voorbeeldcode hieronder.

Hoofdlettergevoeligheid voor linktekst

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 buiten en binnen een blok

Met de nieuwste HTML5-standaard kunnen tags binnen en buiten tags op blokniveau worden geplaatst, zoals , , of . De methoden โ€œBy.linkText()โ€ en โ€œBy.partialLinkText()โ€ hebben toegang tot een link die zich buiten en binnen deze elementen op blokniveau bevindt. Beschouw de onderstaande HTML-code.

Links buiten en binnen een blok

Links buiten en binnen een blok

De onderstaande WebDriver-code heeft toegang tot beide links met behulp van de By.partialLinkText()-methode.

Links buiten en binnen een blok

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

De bovenstaande uitvoer bevestigt dat beide links met succes zijn geopend omdat hun respectieve paginatitels correct zijn opgehaald.

Samenvatting

  • Links zijn toegankelijk via de click()-methode.
  • Naast de locators die beschikbaar zijn voor elk WebElement, hebben Links ook op linktekst gebaseerde locators:
    • Door.linkText() โ€“ lokaliseert de links op basis van de exacte overeenkomst met de tekst van de link die als parameter is opgegeven.
    • Door.partialLinkText() โ€“ lokaliseert links op basis van de gedeeltelijke tekstovereenkomst van de tekst van de link.
  • Beide bovenstaande locators zijn hoofdlettergevoelig.
  • Als er meerdere overeenkomsten zijn, selecteren By.linkText() en By.partialLinkText() alleen de eerste overeenkomst. In dergelijke gevallen waarin meerdere links met dezelfde linktekst aanwezig zijn, worden andere locators op basis van xpath en CSS gebruikt.
  • findElements() & By.tagName(โ€œaโ€) methode vindt alle elementen op de pagina die voldoen aan de locatorcriteria
  • Links zijn toegankelijk via By.linkText() en By.partialLinkText(), ongeacht of ze zich binnen of buiten elementen op blokniveau bevinden.

Vat dit bericht samen met: