Vyhľadajte prvky podľa textu odkazu & Čiastočný text odkazu v selenovom webdriveri

Obsah:

Anonim

Čo je text odkazu v seléne?

Text odkazu na selén slúži na identifikáciu hypertextové odkazy na webové stránky. Zisťuje sa pomocou kotvovej značky. Na vytvorenie hypertextových odkazov na webovej stránke môžeme použiť kotviacu značku nasledovanú odkazom Text.

Odkazy zodpovedajúce kritériu

K odkazom je možné pristupovať pomocou presnej alebo čiastočnej zhody ich textu odkazu. Nasledujúce príklady poskytujú scenáre, v ktorých by existovalo viac zhôd, a vysvetľujú, ako by s nimi WebDriver zaobchádzal.

V tejto príručke sa naučíme dostupné metódy na vyhľadanie a prístup k odkazom pomocou nástroja Webdriver. Taktiež prediskutujeme niektoré bežné problémy, ktorým čelíme pri prístupe k odkazom, a ďalej budeme diskutovať o tom, ako ich vyriešiť.

Tu sa dozviete

  • Prístup k odkazom pomocou presnej zhody textu: By.linkText ()
  • Prístup k odkazom pomocou čiastočnej zhody textu: By.partialLinkText ()
  • Ako získať viac odkazov s rovnakým textom odkazu
  • Rozlišujú sa veľké a malé písmená v texte odkazu
  • Odkazy mimo a vo vnútri bloku

Prístup k odkazom pomocou presnej zhody textu: By.linkText ()

Prístup k odkazom pomocou ich presného textu odkazu sa vykonáva metódou By.linkText () . Ak však existujú dva odkazy, ktoré majú rovnaký text odkazu, táto metóda získa prístup iba k prvému odkazu. Zvážte kód HTML uvedený nižšie

Pri pokuse o spustenie nižšie uvedeného kódu WebDriver získate prístup k prvému odkazu „kliknite sem“

Kód:

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;verejná trieda MyClass {public static void main (String [] args) {Reťazec baseUrl = "http://demo.guru99.com/test/link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Ovládač WebDriver = nový ChromeDriver ();driver.get (baseUrl);driver.findElement (By.linkText ("kliknite sem")). click ();System.out.println ("názov stránky je: + driver.getTitle ());driver.quit ();}}

Takto to funguje -

Vďaka tomu budete automaticky presmerovaní na Google.

Prístup k odkazom pomocou čiastočnej zhody textu: By.partialLinkText ()

Prístup k odkazom pomocou časti ich textu odkazu sa vykonáva pomocou metódy By.partialLinkText () . Ak zadáte čiastočný text odkazu, ktorý má viac zhôd, bude prístupná iba prvá zhoda. Zvážte kód HTML uvedený nižšie.

Po vykonaní nižšie uvedeného kódu WebDriver budete stále presmerovaný na Google.

Kód:

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;verejná trieda P1 {public static void main (String [] args) {Reťazec baseUrl = "http://demo.guru99.com/test/accessing-link.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Ovládač WebDriver = nový ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("tu")). click ();System.out.println ("Názov stránky je: + driver.getTitle ());driver.quit ();}}

Ako získať viac odkazov s rovnakým textom odkazu

Ako teda vyriešiť vyššie uvedený problém? Ako to urobíme v prípade, že existuje viac odkazov s rovnakým textom odkazu a chceme získať prístup k iným ako prvým odkazom?

V takýchto prípadoch sa zvyčajne používajú rôzne lokátory, napríklad ... By.xpath (), By.cssSelector () alebo By.tagName ().

Najčastejšie sa používa By.xpath (). Je to najspoľahlivejší, ale vyzerá tiež komplexne a nečitateľne.

Rozlišujú sa veľké a malé písmená v texte odkazu

V parametroch By.linkText () a By.partialLinkText () sa rozlišujú veľké a malé písmená, čo znamená, že na veľkých písmenách záleží. Napríklad na domovskej stránke Mercury Tours sú dva odkazy, ktoré obsahujú text „egis“ - jeden je odkaz „REGISTROVAŤ“, ktorý sa nachádza v hornom menu, a druhý je odkaz „Registrovať sa“, ktorý sa nachádza v pravej dolnej časti stránky.

Aj keď oba odkazy obsahujú postupnosť znakov „egis“, jedným z nich je metóda „By.partialLinkText ()“, ktorá k týmto dvom odkazom pristupuje osobitne v závislosti od použitia veľkých písmen v znakoch. Pozrite si ukážkový kód nižšie.

Zákonníka

public static void main (String [] args) {Reťazec baseUrl = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Ovládač WebDriver = nový ChromeDriver ();driver.get (baseUrl);Reťazec 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 vo vnútri bloku

Najnovší štandard HTML5 umožňuje umiestniť značky do značiek zvonku a mimo nich na úrovni blokov, ako sú

,

alebo

. Metódy „By.linkText ()“ a „By.partialLinkText ()“ majú prístup k odkazu umiestnenému mimo a vo vnútri týchto prvkov na úrovni bloku. Zvážte kód HTML uvedený nižšie.

Nasledujúci kód WebDriver pristupuje k obidvom týmto odkazom pomocou metódy By.partialLinkText ().

Kód:

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;verejná trieda MyClass {public static void main (String [] args) {Reťazec baseUrl = "http://demo.guru99.com/test/block.html";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Ovládač WebDriver = nový ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("Inside")). click ();System.out.println (driver.getTitle ());driver.navigate (). späť ();driver.findElement (By.partialLinkText ("Outside")). click ();System.out.println (driver.getTitle ());driver.quit ();}}

Vyššie uvedený výstup potvrdzuje, že k obom odkazom sa podarilo úspešne získať, pretože ich príslušné názvy stránok boli načítané správne.

Zhrnutie

  • K odkazom sa pristupuje metódou click ().
  • Okrem lokátorov, ktoré sú k dispozícii pre akýkoľvek WebElement, majú odkazy aj lokátory založené na texte odkazov:
    • By.linkText () - vyhľadá odkazy na základe presnej zhody textu odkazu poskytnutého ako parameter.
    • By.partialLinkText () - vyhľadá odkazy na základe čiastočnej zhody textu textu odkazu.
  • V obidvoch vyššie uvedených lokátoroch sa rozlišujú veľké a malé písmená.
  • Ak existuje viac zhôd, By.linkText () a By.partialLinkText () vyberú iba prvú zhodu. V prípadoch, keď je prítomných viac odkazov s rovnakým textom odkazu, používajú sa iné vyhľadávače založené na xpath, CSS.
  • Metóda findElements () & By.tagName ("a") vyhľadá všetky prvky na stránke zodpovedajúce kritériám lokátora
  • K odkazom môžu získať prístup By.linkText () a By.partialLinkText (), či už sú vo vnútri alebo mimo prvkov na úrovni bloku.