Linktekst og delvis lenketekst inn Selenium

Hva er lenketekst i Selenium?

A Link tekst inn Selenium brukes til å identifisere hyperkoblingene på en nettside. Det bestemmes ved hjelp av en ankerbrikke. For å lage hyperkoblingene på en nettside kan vi bruke en ankertag etterfulgt av lenken Tekst.

Lenker som samsvarer med et kriterium

Lenker kan nås ved å bruke en nøyaktig eller delvis samsvar med lenketeksten. Eksemplene nedenfor gir scenarier der flere treff vil eksistere og forklarer hvordan WebDriver vil håndtere dem.

I denne opplæringen lærer vi de tilgjengelige metodene for å finne og få tilgang til koblingene ved hjelp av Webdriver. Vi vil også diskutere noen av de vanlige problemene du møter når du får tilgang til lenker, og vil videre diskutere hvordan de kan løses.

Fullfør lenketekst inn Selenium – By.linkText()

Tilgang til lenker med deres eksakte lenketekst gjøres gjennom By.linkText()-metoden. Men hvis det er to lenker som har samme lenketekst, vil denne metoden bare få tilgang til den første. Tenk på HTML-koden nedenfor

Link tekst inn Selenium–By.LinkText()

Link tekst inn Selenium–By.LinkText()

Når du prøver å kjøre WebDriver-koden nedenfor, får du tilgang til den første "klikk her"-lenken

Link tekst inn Selenium–By.LinkText()

Kode:

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

}			

Her er hvordan det fungerer-

Link tekst inn Selenium–By.LinkText()

Som et resultat blir du automatisk ført til Google.

Link tekst inn Selenium–By.LinkText()

Fullfør delvis lenketekst inn Selenium – By.partialLinkText()

Tilgang til lenker ved å bruke en del av lenketeksten deres gjøres ved å bruke By.partialLinkText() metode. Hvis du spesifiserer en delvis lenketekst som har flere treff, vil bare det første treffet få tilgang. Tenk på HTML-koden nedenfor.

Delvis lenketekst inn Selenium – By.partialLinkText()

Delvis lenketekst inn Selenium – By.partialLinkText()

Når du kjører WebDriver-koden nedenfor, blir du fortsatt ført til Google.

Delvis lenketekst inn Selenium – By.partialLinkText()

Kode:

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

Delvis lenketekst inn Selenium – By.partialLinkText()

Hvordan få flere lenker med samme lenketekst

Så hvordan omgå problemet ovenfor? I tilfeller der det er flere lenker med samme lenketekst, og vi ønsker å få tilgang til andre lenker enn den første, hvordan går vi frem?

I slike tilfeller, vanligvis, forskjellige locatorer, nemlig... By.xpath(), By.cssSelector() eller By.tagName() brukes.

Mest brukt er By.xpath(). Det er den mest pålitelige, men den ser også kompleks og ikke-lesbar ut.

Skilt mellom store og små bokstaver for lenketekst

Størrelse og store bokstaver for lenketekst

Parametrene for By.linkText() og By.partialLinkText() begge skiller mellom store og små bokstaver, noe som betyr at bruk av store og små bokstaver er viktige. For eksempel i Mercury Tours' hjemmeside, det er to lenker som inneholder teksten "egis" - den ene er "REGISTER"-lenken i toppmenyen, og den andre er "Registrer deg her"-lenken nederst til høyre på siden.

Størrelse og store bokstaver for lenketekst

Selv om begge lenkene inneholder tegnsekvensen "egis", er den ene metoden "By.partialLinkText()" som vil få tilgang til disse to koblingene separat avhengig av bruken av store bokstaver. Se eksempelkoden nedenfor.

Størrelse og store bokstaver for lenketekst

Kode

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

    }

Linker utenfor og inne i en blokk

Den nyeste HTML5-standarden gjør at taggene kan plasseres innenfor og utenfor blokknivåtagger som , , eller . Metodene "By.linkText()" og "By.partialLinkText()" kan få tilgang til en kobling som ligger utenfor og inne i disse blokknivåelementene. Tenk på HTML-koden nedenfor.

Linker utenfor og inne i en blokk

Linker utenfor og inne i en blokk

WebDriver-koden nedenfor får tilgang til begge disse koblingene ved hjelp av By.partialLinkText()-metoden.

Linker utenfor og inne i en blokk

Kode:

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

Utdataene ovenfor bekrefter at begge koblingene ble åpnet fordi deres respektive sidetitler ble hentet på riktig måte.

Sammendrag

  • Koblinger åpnes ved å bruke click()-metoden.
  • Bortsett fra lokalisatorene som er tilgjengelige for alle WebElement, har Links også lenketekstbaserte lokalisatorer:
    • By.linkText() – lokaliserer lenkene basert på nøyaktig samsvar med lenkens tekst oppgitt som en parameter.
    • By.partialLinkText() – finner lenker basert på den delvise tekstmatchen til lenkens tekst.
  • Begge lokatorene ovenfor er sensitive for store og små bokstaver.
  • Hvis det er flere treff, vil By.linkText() og By.partialLinkText() bare velge det første treffet. I slike tilfeller hvor flere lenker med samme lenketekst er tilstede, brukes andre locatorer basert på xpath, CSS.
  • findElements() & By.tagName(“a”)-metoden finner alle elementene på siden som samsvarer med lokaliseringskriteriene
  • Koblinger kan nås av By.linkText() og By.partialLinkText() enten de er innenfor eller utenfor blokknivåelementer.