Leidke elemendid lingi teksti ja osalise lingi teksti järgi Selenium

Mis on lingi tekst Selenium?

A Link tekst sisse Selenium kasutatakse veebilehel olevate hüperlinkide tuvastamiseks. See määratakse ankrusildi abil. Hüperlinkide loomiseks veebilehel saame kasutada ankurmärgendit, millele järgneb link Tekst.

Kriteeriumile vastavad lingid

Linkidele pääseb juurde, kasutades nende lingi teksti täpset või osalist vastet. Allolevad näited pakuvad stsenaariume, kus oleks mitu vastet, ja selgitavad, kuidas WebDriver nendega tegeleb.

Selles õpetuses õpime saadaolevaid meetodeid veebidraiveri abil linkide leidmiseks ja neile juurde pääsemiseks. Samuti käsitleme mõningaid levinumaid probleeme, millega linkidele juurdepääsul kokku puutute, ja arutame edasi, kuidas neid lahendada.

Täitke lingi tekst Selenium – By.linkText()

Juurdepääs linkidele nende täpse lingiteksti abil toimub meetodi By.linkText() kaudu. Kui aga on kaks linki, millel on sama lingi tekst, pääseb see meetod juurde ainult esimesele. Mõelge allolevale HTML-koodile

Lingi tekst sisse Selenium–By.LinkText()

Lingi tekst sisse Selenium–By.LinkText()

Kui proovite allolevat WebDriveri koodi käivitada, pääsete juurde esimesele lingile "klõpsake siin".

Lingi tekst sisse Selenium–By.LinkText()

kood:

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 = "http://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();			
    }		

}			

Siin on, kuidas see töötab -

Lingi tekst sisse Selenium–By.LinkText()

Selle tulemusena suunatakse teid automaatselt Google'i.

Lingi tekst sisse Selenium–By.LinkText()

Täitke osaline lingi tekst Selenium – By.partialLinkText()

Juurdepääs linkidele, kasutades osa nende lingi tekstist, toimub kasutades By.partialLinkText() meetod. Kui määrate osalise lingi teksti, millel on mitu vastet, pääseb juurde ainult esimesele vastele. Mõelge allolevale HTML-koodile.

Osaline lingi tekst sisse Selenium – By.partialLinkText()

Osaline lingi tekst sisse Selenium – By.partialLinkText()

Kui käivitate alloleva WebDriveri koodi, suunatakse teid ikkagi Google'i.

Osaline lingi tekst sisse Selenium – By.partialLinkText()

kood:

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 = "http://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();			
    }		
}

Osaline lingi tekst sisse Selenium – By.partialLinkText()

Kuidas hankida mitu linki sama lingitekstiga

Niisiis, kuidas ülaltoodud probleemist mööda saada? Kui sama lingitekstiga on mitu linki ja me tahame juurde pääseda muudele linkidele peale esimese, kuidas seda teha?

Sellistel juhtudel kasutatakse üldiselt erinevaid lokaatoreid, nimelt… By.xpath(), By.cssSelector() või By.tagName().

Kõige sagedamini kasutatav on By.xpath(). See on kõige usaldusväärsem, kuid tundub ka keeruline ja mitteloetav.

Lingi teksti tõstutundlikkus

Lingi teksti tõstutundlikkus

Parameetrid jaoks By.linkText() ja By.partialLinkText() on mõlemad tõstutundlikud, mis tähendab, et suurtähtede kasutamine on oluline. Näiteks sisse Mercury Toursi kodulehel on kaks linki, mis sisaldavad teksti “egis” – üks on ülamenüüs olev link “REGISTREERU” ja teine ​​lehe paremas alanurgas olev link “Registreeri siin”.

Lingi teksti tõstutundlikkus

Kuigi mõlemad lingid sisaldavad märgijada "egis", pääseb üks meetod "By.partialLinkText()" neile kahele lingile eraldi, olenevalt märkide suurtähtedest. Vaadake allpool olevat näidiskoodi.

Lingi teksti tõstutundlikkus

kood

public static void main(String[] args) {								
        String baseUrl = "http://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();			

    }

Lingid plokist väljas ja sees

Uusim HTML5-standard lubab silte paigutada plokitasemel siltide (nt , , või ) sisse ja väljapoole. Meetodid "By.linkText()" ja "By.partialLinkText()" pääsevad juurde lingile, mis asub nendest plokitaseme elementidest väljaspool ja sees. Mõelge allolevale HTML-koodile.

Lingid plokist väljas ja sees

Lingid plokist väljas ja sees

Allolev WebDriveri kood pääseb mõlemale lingile, kasutades meetodit By.partialLinkText().

Lingid plokist väljas ja sees

kood:

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 = "http://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();			
    }		
}		

Ülaltoodud väljund kinnitab, et mõlemale lingile pääseti edukalt juurde, kuna nende vastavad lehepealkirjad leiti õigesti.

kokkuvõte

  • Linkidele pääseb juurde meetodi click() abil.
  • Lisaks iga WebElementi jaoks saadaolevatele lokaatoritele on linkidel ka lingi tekstipõhised lokaatorid:
    • By.linkText() – tuvastab lingid parameetrina antud lingi teksti täpse vaste alusel.
    • By.partialLinkText() – otsib lingid lingi teksti osalise teksti vaste põhjal.
  • Mõlemad ülaltoodud lokaatorid on tõstutundlikud.
  • Kui vasteid on mitu, valivad By.linkText() ja By.partialLinkText() ainult esimese vaste. Sellistel juhtudel, kui on olemas mitu sama lingitekstiga linki, kasutatakse muid xpath-il põhinevaid lokaatoreid, CSS-i.
  • Meetod findElements() & By.tagName(“a”) leiab lehelt kõik lokaatori kriteeriumidele vastavad elemendid
  • Linkidele pääseb juurde By.linkText() ja By.partialLinkText() abil, olenemata sellest, kas need on plokitaseme elementide sees või väljaspool.