Text odkazu a částečný text odkazu v Selenium
⚡ Chytré shrnutí
Text odkazu a částečný text odkazu v Selenium vyhledá hypertextové odkazy na webové stránce pomocí jejich kotevního textu. Metoda By.linkText() vyhledá přesný text, zatímco By.partialLinkText() vyhledá jeho část a oba lokátory rozlišují velká a malá písmena a vracejí první shodu.

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“.
Code:
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.
Po spuštění níže uvedeného kódu WebDriver budete stále přesměrováni na Google.
Code:
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() a 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.
Přestože oba odkazy obsahují sekvenci znaků „egis“, metoda „By.partialLinkText()“ bude k těmto dvěma odkazům přistupovat odděleně v závislosti na psaní velkých písmen. Viz níže uvedený ukázkový kód.
Code
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().
Code:
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ě.


.png)
.png)

.png)
.png)
.png)
.png)
.png)

.png)
.png)
.png)
.png)
.png)