Text odkazu a částečný text odkazu v Selenium

V čem je text odkazu Selenium?

A Text odkazu v Selenium se používá k identifikaci hypertextových odkazů na webové stránce. Určuje se pomocí kotevního štítku. Pro vytvoření hypertextových odkazů na webové stránce můžeme použít kotevní značku následovanou textem odkazu.

Odkazy odpovídající kritériu

K odkazům lze přistupovat pomocí přesné nebo částečné shody textu odkazu. Níže uvedené příklady poskytují scénáře, kde by existovalo více shod, a vysvětlují, jak by se s nimi WebDriver vypořádal.

V tomto tutoriálu se naučíme dostupné metody k nalezení a přístupu k odkazům pomocí Webdriveru. Budeme také diskutovat o některých běžných problémech, kterým čelíte při přístupu k Links, a dále o tom, jak je vyřešit.

Kompletní text odkazu v Selenium – By.linkText()

Přístup k odkazům pomocí jejich přesného textu se provádí pomocí metody By.linkText().. Pokud však existují dva odkazy, které mají velmi stejný text odkazu, tato metoda zpřístupní pouze ten první. Zvažte HTML kód níže

Text odkazu v Selenium–By.LinkText()

Text odkazu v Selenium–By.LinkText()

Když se pokusíte spustit níže uvedený kód WebDriver, dostanete se na první odkaz „klikněte sem“.

Text odkazu v Selenium–By.LinkText()

Kód:

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

}			

Zde je návod, jak to funguje-

Text odkazu v Selenium–By.LinkText()

V důsledku toho budete automaticky přesměrováni na Google.

Text odkazu v Selenium–By.LinkText()

Doplňte částečný text odkazu Selenium – By.partialLinkText()

Přístup k odkazům pomocí části jejich textu odkazu se provádí pomocí By.partialLinkText() metoda. Pokud zadáte částečný text odkazu, který má více shod, bude přístupná pouze první shoda. Zvažte HTML kód níže.

Částečný text odkazu v Selenium – By.partialLinkText()

Částečný text odkazu v Selenium – By.partialLinkText()

Když spustíte níže uvedený kód WebDriver, budete stále přesměrováni na Google.

Částečný text odkazu v Selenium – By.partialLinkText()

Kód:

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

Částečný text odkazu v Selenium – By.partialLinkText()

Jak získat více odkazů se stejným textem odkazu

Jak tedy výše uvedený problém obejít? V případech, kdy existuje více odkazů se stejným textem odkazu a my chceme získat přístup k jiným odkazům, než je ten první, jak na to?

V takových případech se obecně používají různé lokátory viz… By.xpath(), By.cssSelector() nebo By.tagName().

Nejčastěji se používá By.xpath(). Je nejspolehlivější, ale také vypadá složitě a nečitelně.

U textu odkazu se rozlišují malá a velká písmena

Rozlišení malých a velkých písmen pro text odkazu

Parametry pro By.linkText() si By.partialLinkText() obě rozlišují velká a malá písmena, což znamená, že na velkých písmenech záleží. Například v Mercury Na domovské stránce Tours jsou dva odkazy, které obsahují text „egis“ – jeden je odkaz „ZAREGISTRUJTE se“ v horním menu a druhý je odkaz „Zaregistrujte se zde“ v pravé dolní části stránky.

Rozlišení malých a velkých písmen pro text odkazu

Ačkoli oba odkazy obsahují sekvenci znaků „egis“, jeden z nich je, že metoda „By.partialLinkText()“ bude k těmto dvěma odkazům přistupovat samostatně v závislosti na velikosti písmen. Viz ukázkový kód níže.

Rozlišení malých a velkých písmen pro text odkazu

Kód

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

    }

Odkazy vně a uvnitř bloku

Nejnovější standard HTML5 umožňuje umístění značek uvnitř i vně značek na úrovni bloku, jako jsou , nebo . Metody „By.linkText()“ a „By.partialLinkText()“ mohou přistupovat k odkazu umístěnému vně a uvnitř těchto prvků na úrovni bloku. Zvažte HTML kód níže.

Odkazy vně a uvnitř bloku

Odkazy vně a uvnitř bloku

Níže uvedený kód WebDriver přistupuje k oběma těmto odkazům pomocí metody By.partialLinkText().

Odkazy vně a uvnitř bloku

Kód:

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

Výše uvedený výstup potvrzuje, že oba odkazy byly úspěšně zpřístupněny, protože jejich příslušné názvy stránek byly načteny správně.

Shrnutí

  • K odkazům se přistupuje pomocí metody click().
  • Kromě lokátorů dostupných pro jakýkoli WebElement mají Odkazy také lokátory založené na textu odkazů:
    • By.linkText() – vyhledá odkazy na základě přesné shody textu odkazu poskytnutého jako parametr.
    • By.partialLinkText() – vyhledá odkazy na základě částečné shody textu s textem odkazu.
  • Oba výše uvedené lokátory rozlišují malá a velká písmena.
  • Pokud existuje více shod, By.linkText() a By.partialLinkText() vyberou pouze první shodu. V takových případech, kdy je přítomno více odkazů se stejným textem odkazu, se používají jiné lokátory založené na xpath, CSS.
  • Metoda findElements() & By.tagName(“a”) najde všechny prvky na stránce, které odpovídají kritériím lokátoru
  • Odkazy jsou přístupné pomocí By.linkText() a By.partialLinkText(), ať už jsou uvnitř nebo vně prvků na úrovni bloku.