Co je text odkazu v selenu?
Text odkazu na selen slouží k identifikaci hypertextové odkazy na webové stránky. Určuje se pomocí kotevní značky. Pro vytváření hypertextových odkazů na webové stránce můžeme použít kotevní značku následovanou odkazem Text.
Odkazy odpovídající kritériu
K odkazům lze přistupovat pomocí přesné nebo částečné shody jejich textu odkazu. Níže uvedené příklady poskytují scénáře, kde by existovalo více shod, a vysvětlují, jak by s nimi WebDriver zacházel.
V tomto tutoriálu se naučíme dostupné metody vyhledání a přístupu k Odkazy pomocí Webdriveru. Rovněž probereme některé běžné problémy, kterým čelíme při přístupu k odkazům, a dále budeme diskutovat o tom, jak je vyřešit.
Zde se dozvíte
- Přístup k odkazům pomocí přesné shody textu: By.linkText ()
- Přístup k odkazům pomocí částečné shody textu: By.partialLinkText ()
- Jak získat více odkazů se stejným textem odkazu
- Rozlišují se malá a velká písmena u textu odkazu
- Odkazy mimo a uvnitř bloku
Přístup k odkazům pomocí přesné shody textu: By.linkText ()
Přístup k odkazům pomocí jejich přesného textu odkazu se provádí pomocí metody By.linkText () . Pokud však existují dva odkazy, které mají stejný text odkazu, tato metoda získá přístup pouze k prvnímu. Zvažte níže uvedený HTML kód
Když se pokusíte spustit níže uvedený kód WebDriver, získáte přístup k prvnímu odkazu „klikněte sem“
Kód:
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;veřejná třída MyClass {public static void main (String [] args) {Řetězec baseUrl = "http://demo.guru99.com/test/link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Ovladač WebDriver = nový ChromeDriver ();driver.get (baseUrl);driver.findElement (By.linkText ("klikněte sem")). click ();System.out.println ("název stránky je: + driver.getTitle ());driver.quit ();}}
Jak to funguje -
Ve výsledku budete automaticky přesměrováni na Google.
Přístup k odkazům pomocí částečné shody textu: By.partialLinkText ()
Přístup k odkazům pomocí části jejich textu odkazu se provádí pomocí metody By.partialLinkText () . Pokud zadáte částečný text odkazu, který má více shod, bude přístupná pouze první shoda. Zvažte níže uvedený HTML kód.
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;veřejná třída P1 {public static void main (String [] args) {Řetězec baseUrl = "http://demo.guru99.com/test/accessing-link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Ovladač WebDriver = nový ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("zde")). click ();System.out.println ("Název stránky je: + driver.getTitle ());driver.quit ();}}
Jak získat více odkazů se stejným textem odkazu
Jak tedy obejít výše uvedený problém? V případech, kdy existuje více odkazů se stejným textem odkazu a chceme získat přístup k jiným než prvním odkazům, jak na to?
V takových případech se obvykle používají různé lokátory, například… By.xpath (), By.cssSelector () nebo By.tagName ().
Nejčastěji se používá By.xpath (). Je to nejspolehlivější, ale také vypadá komplexně a nečitelně.
Rozlišují se malá a velká písmena u textu odkazu
Parametry By.linkText () a By.partialLinkText () rozlišují velká a malá písmena, což znamená, že na velkých písmenech záleží. Například na domovské stránce Mercury Tours jsou dva odkazy, které obsahují text „egis“ - jeden je odkaz „REGISTROVAT“ v horní nabídce a druhý je odkaz „Zaregistrovat zde“ v pravé dolní části stránky.
Ačkoli oba odkazy obsahují posloupnost znaků „egis“, jedním z nich je metoda „By.partialLinkText ()“, která k těmto dvěma odkazům přistupuje samostatně v závislosti na velkých písmenech znaků. Podívejte se na ukázkový kód níže.
Kód
public static void main (String [] args) {Řetězec baseUrl = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Ovladač WebDriver = nový ChromeDriver ();driver.get (baseUrl);Řetězec theLinkText = driver.findElement (od.partialLinkText ("egis")).getText ();System.out.println (theLinkText);theLinkText = driver.findElement (autor.partialLinkText ("EGIS")).getText ();System.out.println (theLinkText);driver.quit ();}