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
Když se pokusíte spustit níže uvedený kód WebDriver, dostanete se na první odkaz „klikněte sem“.
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-
V důsledku toho budete automaticky přesměrováni na Google.
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.
Když spustíte níže uvedený kód WebDriver, budete stále přesměrováni na Google.
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(); } }
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
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.
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.
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.
Níže uvedený kód WebDriver přistupuje k oběma těmto odkazům pomocí metody By.partialLinkText().
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.