Linkkiteksti ja osittainen linkkiteksti sisään Selenium

Mitä linkkiteksti sisältää Selenium?

A Linkki teksti sisään Selenium käytetään tunnistamaan web-sivun hyperlinkit. Se määritetään ankkuritunnisteen avulla. Hyperlinkkien luomiseen web-sivulle voimme käyttää ankkuritunnistetta, jota seuraa linkki Teksti.

Kriteeriä vastaavat linkit

Linkkejä voidaan käyttää käyttämällä niiden linkkitekstiä täsmällisesti tai osittain. Alla olevat esimerkit tarjoavat skenaarioita, joissa olisi useita osumia, ja selittävät, kuinka WebDriver käsittelee niitä.

Tässä opetusohjelmassa opimme käytettävissä olevat menetelmät löytää ja käyttää linkkejä Webdriverin avulla. Keskustelemme myös joistakin yleisistä ongelmista, joita kohtaat linkkien käytön aikana, ja keskustelemme edelleen niiden ratkaisemisesta.

Täydellinen linkin teksti sisään Selenium – By.linkText()

Linkkien käyttäminen niiden tarkalla linkkitekstillä tapahtuu By.linkText() -menetelmän kautta. Jos kuitenkin on kaksi linkkiä, joilla on sama linkkiteksti, tämä menetelmä käyttää vain ensimmäistä. Harkitse alla olevaa HTML-koodia

Linkin teksti sisään Selenium-By.LinkText()

Linkin teksti sisään Selenium-By.LinkText()

Kun yrität suorittaa alla olevan WebDriver-koodin, pääset ensimmäiseen "napsauta tästä" -linkkiä

Linkin teksti sisään Selenium-By.LinkText()

Koodi:

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

}			

Näin se toimii -

Linkin teksti sisään Selenium-By.LinkText()

Tämän seurauksena sinut ohjataan automaattisesti Googleen.

Linkin teksti sisään Selenium-By.LinkText()

Täydellinen osittainen linkin teksti Selenium – By.partialLinkText()

Linkkien käyttäminen käyttämällä osaa niiden linkkitekstistä tapahtuu käyttämällä By.partialLinkText() menetelmä. Jos määrität osittaisen linkkitekstin, jossa on useita osumia, vain ensimmäinen vastaavuus otetaan käyttöön. Harkitse alla olevaa HTML-koodia.

Osittainen linkin teksti sisään Selenium – By.partialLinkText()

Osittainen linkin teksti sisään Selenium – By.partialLinkText()

Kun suoritat alla olevan WebDriver-koodin, sinut ohjataan edelleen Googleen.

Osittainen linkin teksti sisään Selenium – By.partialLinkText()

Koodi:

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

Osittainen linkin teksti sisään Selenium – By.partialLinkText()

Kuinka saada useita linkkejä samalla linkkitekstillä

Joten kuinka kiertää yllä oleva ongelma? Tapauksissa, joissa on useita linkkejä samalla linkkitekstillä ja haluamme käyttää muita linkkejä kuin ensimmäistä, miten toimitaan?

Tällaisissa tapauksissa käytetään yleensä erilaisia ​​paikantimia, nimittäin… By.xpath(), By.cssSelector() tai By.tagName().

Yleisimmin käytetty on By.xpath(). Se on luotettavin, mutta se näyttää myös monimutkaiselta ja lukemattomalta.

Kirjainkoon erottelu linkkitekstissä

Kirjainten herkkyys linkkitekstiä varten

Parametrit kohteelle By.linkText() ja By.partialLinkText() molemmissa kirjainkoolla on merkitystä, mikä tarkoittaa, että isoilla kirjaimilla on merkitystä. Esimerkiksi sisään Mercury Toursin kotisivulla on kaksi linkkiä, jotka sisältävät tekstin "egis" - yksi on "REKISTERÖI"-linkki ylävalikosta ja toinen "Rekisteröidy" -linkki, joka löytyy sivun oikeasta alakulmasta.

Kirjainten herkkyys linkkitekstiä varten

Vaikka molemmat linkit sisältävät merkkijonon "egis", toinen on "By.partialLinkText()" -menetelmä, joka käyttää näitä kahta linkkiä erikseen riippuen merkkien isoista kirjaimista. Katso esimerkkikoodi alta.

Kirjainten herkkyys linkkitekstiä varten

Koodi

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

    }

Linkit lohkon ulkopuolelle ja sisällä

Uusin HTML5-standardi mahdollistaa tunnisteiden sijoittamisen lohkotason tunnisteiden, kuten , tai , sisään ja ulkopuolelle . "By.linkText()" ja "By.partialLinkText()" -menetelmät voivat käyttää linkkiä, joka sijaitsee näiden lohkotason elementtien ulkopuolella ja sisällä. Harkitse alla olevaa HTML-koodia.

Linkit lohkon ulkopuolelle ja sisällä

Linkit lohkon ulkopuolelle ja sisällä

Alla oleva WebDriver-koodi käyttää molempia linkkejä käyttämällä By.partialLinkText()-menetelmää.

Linkit lohkon ulkopuolelle ja sisällä

Koodi:

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

Yllä oleva tulos vahvistaa, että molempien linkkien käyttö onnistui, koska niiden vastaavat sivuotsikot haettiin oikein.

Yhteenveto

  • Linkkejä käytetään click()-menetelmällä.
  • WebElementille saatavilla olevien paikantimien lisäksi Linkeissä on myös linkkitekstipohjaisia ​​paikantimia:
    • By.linkText() – paikantaa linkit parametrina annetun linkin tekstin tarkan vastaavuuden perusteella.
    • By.partialLinkText() – paikantaa linkit linkin tekstin osittaisen tekstivastaavuuden perusteella.
  • Molemmat yllä olevat paikantimet ovat kirjainkoolla herkkiä.
  • Jos osumia on useita, By.linkText() ja By.partialLinkText() valitsevat vain ensimmäisen vastaavuuden. Tällaisissa tapauksissa, joissa on useita linkkejä, joissa on sama linkkiteksti, käytetään muita xpath-, CSS-pohjaisia ​​paikantimia.
  • findElements() & By.tagName("a") -menetelmä löytää kaikki sivun elementit, jotka vastaavat paikannusehtoja
  • Linkkejä voidaan käyttää By.linkText()- ja By.partialLinkText()-komennoilla riippumatta siitä, ovatko ne lohkotason elementtien sisällä tai ulkopuolella.