Vyhledejte prvky podle textu odkazu & Částečný text odkazu v selenovém webdriveru

Obsah:

Anonim

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

Odkazy mimo a uvnitř bloku

Nejnovější standard HTML5 umožňuje umístit tagy do tagů na úrovni bloku i mimo ně, například

,

nebo

. Metody „By.linkText ()" a „By.partialLinkText ()" mohou přistupovat k odkazu umístěnému mimo a uvnitř těchto prvků na úrovni bloku. Zvažte níže uvedený HTML kód.

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;veřejná třída MyClass {public static void main (String [] args) {Řetězec baseUrl = "http://demo.guru99.com/test/block.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Ovladač WebDriver = nový 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ýstup výše potvrzuje, že k oběma odkazům byl úspěšně přistupován, protože jejich příslušné názvy stránek byly načteny správně.

souhrn

  • 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 odkazu:
    • 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 textu odkazu.
  • Oba výše uvedené lokátory rozlišují velká a malá 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") vyhledá všechny prvky na stránce odpovídající kritériím lokátoru
  • K odkazům lze přistupovat pomocí By.linkText () a By.partialLinkText (), ať už jsou uvnitř nebo vně prvků na úrovni bloku.