XPath obsahuje, Nasleduje súrodenca, Predka & Selén A / ALEBO

Obsah:

Anonim

Ak jednoduchý XPath nie je schopný nájsť pre náš testovací skript komplikovaný webový prvok, musíme použiť funkcie z knižnice XPath 1.0. Kombináciou týchto funkcií môžeme vytvoriť konkrétnejší XPath. Poďme diskutovať o 3 takýchto funkciách -

  1. Obsahuje
  2. Súrodenec
  3. Predok
  4. A ALEBO
  5. Rodič
  6. Začína s
  7. Os XPath

Poďme si ich podrobne preštudovať -

Čo obsahuje () v seléne?

contains () in Selenium is a function within Xpath expression which is used to search for the web elements that contain a particular text. Všetky prvky, ktoré sa zhodujú s danou textovou hodnotou, môžeme extrahovať pomocou funkcie XPath contains () na celej webovej stránke. Obsahuje v XPath má schopnosť nájsť prvok s čiastočným textom.

Pr. Tu hľadáme kotvu. Obsahuje text ako „SAP M“.

"// h4 / a [obsahuje (text (), 'SAP M')]" "

POZNÁMKA: Nasledujúce cvičenie XPath si môžete precvičiť na tejto http://demo.guru99.com/test/selenium-xpath.html

Čo je súrodenec v selenovom webdriveri?

Webdriver A Sibling in Selenium Webdriver je funkcia používaná na získanie webového prvku, ktorý je súrodencom nadradeného prvku. Ak je nadradený prvok známy, potom ho možno ľahko nájsť alebo nájsť pomocou atribútu súrodenca výrazu Xpath v selenovom webdriveri.

Súrodenec v XPath Príklad: Tu na základe súrodeneckého prvku „a“ nájdeme „h4“

"// div [@ class = 'canvas-graph'] // a [@href = '/ accounting.html'] [i [@ class = 'icon-usd']] / following-sibling :: h4"

Predok : Na nájdenie prvku na základe nadradeného prvku môžeme použiť atribút predok XPath.

Pochopme tieto 3 funkcie na príklade -

Skúšobné kroky

Poznámka: Od dátumu vytvorenia tutoriálu bola domovská stránka Guru99 aktualizovaná, takže na spustenie testov použite radšej ukážkovú stránku.

  1. Prejdite na stránku http://demo.guru99.com/test/guru99home/
  2. V časti „Niektoré z našich najobľúbenejších kurzov“ vyhľadajte všetky webové prvky, ktoré súrodencom prvku WebElement, ktorého text je „SELENIUM“
  3. Element nájdeme pomocou funkcie XPath text contains, praotca a súrodenca.

POUŽÍVANIE Obsahuje a XPath Sibling

import java.util.List;import java.util.concurrent.TimeUnit;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;verejná trieda SiblingAndParentInXpath {@Testpublic void testSiblingAndParentInXpath () {Ovládač WebDriver;String driverPath = "C: \\ geckodriver.exe";System.setProperty ("webdriver.gecko.driver", driverPath);ovládač = nový FirefoxDriver ();driver.manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Hľadaný prvok vo vnútri „Populárneho kurzu“, ktorý je súrodencom kontroly „SELENIUM“, Najprv tu nájdeme h2, ktorého text je „Niekoľko našich najobľúbenejších kurzov“, potom prejdeme k jeho nadradenému prvku, ktorým je „ div ', vo vnútri tohto divu nájdeme odkaz, ktorého text je „SELENIUM“, potom nakoniec nájdeme všetkých súrodeneckých prvkov tohto odkazu („SELENIUM“)Zoznam  dateBox = driver.findElements (By.xpath ("// h2 [obsahuje (text (), 'niekoľko našich najobľúbenejších kurzov')]) / parent :: div // div [// a [text () = 'SELENIUM']] / nasledujúci súrodenec :: div [@ class = 'rt-grid-2 rt-omega'] "));// Vytlačí všetkých súrodencov prvku pomenovaného ako „SELENIUM“ v časti „Obľúbený kurz“pre (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}driver.close ();}}

Výstup bude vyzerať takto:

Predok v selenovom webdriveri

Predok v selenovom webovom ovládači je funkcia používaná na nájdenie predka konkrétneho člena v určenej vrstve. Úroveň predka, ktorá sa má vrátiť, alebo úroveň predka vo vzťahu k úrovni člena možno výslovne určiť. Vráti počet hierarchických krokov od predka a vyhľadá zadaného predka, ktorého chce užívateľ.

Teraz predpokladajme, že musíme vyhľadať všetky prvky v sekcii „Populárny kurz“ pomocou predka kotvy, ktorej text je „SELENIUM“

Tu bude náš dopyt xpath podobný

"//div[.//a[text()='SELENIUM']]/ancestor::div[@class='rt-grid-2 rt-omega '] / following-sibling :: div"

Kompletný kód

import java.util.List;import java.util.concurrent.TimeUnit;import org.openqa.selenium.By;import org.openqa.selenium.Keys;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;verejná trieda AncestorInXpath {@Testpublic void testAncestorInXpath () {Ovládač WebDriver = nový FirefoxDriver ();driver.manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Hľadať všetky prvky v sekcii „Populárny kurz“// pomocou predka kotvy, ktorej text je „SELENIUM“Zoznam  dateBox = driver.findElements (By.xpath ("// div [.// a [text () = 'SELENIUM']] / ancestor :: div [@ class = 'rt-grid-2 rt- omega '] / nasledujúci súrodenec :: div "));// Vytlačí všetkých súrodencov prvku pomenovaného ako „SELENIUM“ v časti „Populárny kurz“pre (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}driver.quit ();}}

Výstup bude vyzerať ako -

Pomocou AND a OR

Použitím AND a OR môžete do nášho výrazu XPath vložiť 2 podmienky.

  • V prípade AND by obe podmienky mali byť pravdivé, potom iba nájde prvok.
  • V prípade ALEBO by mala byť splnená ktorákoľvek z 2 podmienok, potom iba nájde prvok.

Tu bude náš dopyt XPath podobný

Xpath = // * [@ type = 'submit' OR @ name = 'btnReset']
Xpath = // input [@ type = 'submit' and @ name = 'btnLogin']

Skúšobné kroky:

  1. Prejdite na stránku http://demo.guru99.com/v1/
  2. V tejto časti použijeme vyššie uvedenú ukážkovú stránku na hľadanie prvkov s rôznymi funkciami XPath.

Element nájdete pomocou osí AND a OR, parent, start-with a XPath

ALEBO ALEBO Príklad

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;verejná trieda AND_OR {public static void main (String [] args) {Ovládač WebDriver;WebElement w, x;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");ovládač = nový ChromeDriver ();// Spustenie aplikáciedriver.get ("https://www.guru99.com/");// Vyhľadaj element pomocou ALEBO v xpathw = driver.findElement (By.xpath ("// * [@ type = 'submit' OR @ name = 'btnReset']"));// Vytlačí text prvkuSystem.out.println (w.getText ());// Vyhľadajte element pomocou AND na ceste xpathx = driver.findElement (By.xpath ("// input [@ type = 'submit' and @ name = 'btnLogin']"));// Vytlačí text hľadaného prvkuSystem.out.println (x.getText ());// Zatvorte prehliadačdriver.quit ();}}

Čo je rodič v seléne?

Parent in Selenium je metóda používaná na získanie nadradeného uzla aktuálneho uzla vybraného na webovej stránke. Je to veľmi užitočné v situácii, keď vyberáte prvok a potrebujete získať nadradený prvok pomocou Xpath. Táto metóda sa používa aj na získanie rodiča rodiča.

Tu bude náš dopyt XPath podobný

Xpath = // * [@ id = 'rt-feature'] // rodič :: div

XPath pomocou Parent

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;verejná trieda rodič {public static void main (String [] args) {Ovládač WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");ovládač = nový ChromeDriver ();// Spustenie aplikáciedriver.get ("https://www.guru99.com/");// Vyhľadajte element pomocou PARENTw = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // parent :: div"));// Vytlačí text hľadaného prvkuSystem.out.println (w.getText ());// Zatvorte prehliadačdriver.quit ();}}

Začína s

Pomocou funkcie Začíname na nájdete prvok, ktorého atribút sa dynamicky mení pri obnovení alebo iných operáciách, ako je kliknutie, odoslanie atď.

Tu bude náš dopyt XPath podobný

Xpath = // štítok [začína sa na (@ id, 'správa')]

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;verejná trieda začína {public static void main (String [] args) {Ovládač WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");ovládač = nový ChromeDriver ();// Spustenie aplikáciedriver.get ("https://www.guru99.com/");// Hľadajte v prvku pomocou začiatkov sw = driver.findElement (By.xpath ("// štítok [začína sa na (@ id, 'správa')]"));// Vytlačí text hľadaného prvkuSystem.out.println (w.getText ());// Zatvorte prehliadačdriver.quit ();}}

Osi Xpath

Pomocou osí XPath môžete nájsť dynamické a veľmi zložité prvky na webovej stránke. Os XPath obsahuje niekoľko metód na vyhľadanie prvku. Tu sa bude diskutovať o niekoľkých metódach.

nasledujúce : Táto funkcia vráti okamžitý prvok konkrétneho komponentu.

Tu bude náš dopyt XPath podobný

Xpath = // * [@ type = 'text'] // nasledujúci :: vstup

XPath pomocou nasledujúceho

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;verejná trieda je sledovaná {public static void main (String [] args) {Ovládač WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");ovládač = nový ChromeDriver ();// Spustenie aplikáciedriver.get ("https://www.guru99.com/");// Vyhľadajte element pomocou nasledujúcej metódyw = driver.findElement (By.xpath ("// * [@ type = 'text'] // nasledujúci :: vstup"));// Vytlačí text hľadaného prvkuSystem.out.println (w.getText ());// Zatvorte prehliadačdriver.quit ();}}

Predchádzajúci: Táto funkcia vráti predchádzajúci prvok konkrétneho prvku.

Tu bude náš dopyt XPath podobný

Xpath = // * [@ type = 'submit'] // predchádzajúci :: vstup

XPath pomocou Preceding

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;verejná trieda predchádzajúca {public static void main (String [] args) {Ovládač WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");ovládač = nový ChromeDriver ();// Spustenie aplikáciedriver.get ("https://www.guru99.com/");// Vyhľadajte prvok pomocou predchádzajúcej metódyw = driver.findElement (By.xpath ("// * [@ type = 'submit'] // predchádzajúce :: vstup"));// Vytlačí hľadaný prvokSystem.out.println (w.getText ());// Zatvorte prehliadačdriver.quit ();}}

d) Potomok: Táto funkcia vráti potomok prvku konkrétneho prvku.

Tu bude náš dopyt XPath podobný

Xpath = // * [@ id = 'rt-feature'] // potomok :: a

XPath pomocou Descendant

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;verejná trieda Potomok {public static void main (String [] args) {Ovládač WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");ovládač = nový ChromeDriver ();// Spustenie aplikáciedriver.get ("https://www.guru99.com/");// Vyhľadajte prvok pomocou metódy potomkaw = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // descendant :: a")));// Vytlačí hľadaný prvokSystem.out.println (w.getText ());// Zatvorte prehliadačdriver.quit ();}}

Zhrnutie

  • Existujú situácie, kedy nemožno na nájdenie prvku použiť bežný XPath. V takejto situácii potrebujeme rôzne funkcie od dotazu xpath.
  • Tam sú niektoré dôležité funkcie XPath ako XPath obsahuje, rodič, predkovia, následný súrodenec atď.
  • Pomocou týchto funkcií môžete vytvárať zložité výrazy XPath.