XPath sadrži, slijedi brata / sestru, pretka & Selen I / ILI

Sadržaj:

Anonim

Ako jednostavni XPath ne može pronaći komplicirani web element za našu testnu skriptu, trebamo koristiti funkcije iz biblioteke XPath 1.0. Kombinacijom ovih funkcija možemo stvoriti specifičniji XPath. Razgovarajmo o 3 takve funkcije -

  1. Sadrži
  2. Brat ili sestra
  3. Predak
  4. I ILI
  5. Roditelj
  6. Počinje sa
  7. XPath sjekire

Proučimo ih detaljno -

Što je sadrži () u selenu?

contains () u Seleniju je funkcija unutar izraza Xpath koja se koristi za traženje web elemenata koji sadrže određeni tekst. Sve elemente koji se podudaraju s danom vrijednošću teksta možemo izvući pomoću funkcije XPath contains () na cijeloj web stranici. Sadrži u XPathu ima mogućnost pronalaska elementa s djelomičnim tekstom.

Pr. Ovdje tražimo sidro .sadrži tekst kao 'SAP M'.

"// h4 / a [sadrži (tekst (), 'SAP M')]"

NAPOMENA: Sljedeću vježbu XPath možete vježbati na ovom http://demo.guru99.com/test/selenium-xpath.html

Što je brat ili sestra u programu Selenium Webdriver?

Iste razine selena Webdriver je funkcija se koristi za dohvaćanje web element koji je brat u matični element. Ako je nadređeni element poznat, tada se web element može lako pronaći ili locirati koji može koristiti atribut brata ili sestre izraza Xpath u selenium webdriver.

Primjer srodne braće i sestara u XPathu: Ovdje na osnovu srodnog elementa 'a' nalazimo 'h4'

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

Predak : Da bismo pronašli element na temelju nadređenog elementa, možemo koristiti atribut pretka XPath.

Razumijemo ove 3 funkcije na primjeru -

Ispitni koraci

Napomena: Od datuma stvaranja vodiča, početna stranica Guru99 je ažurirana, pa umjesto toga koristite demo stranicu za pokretanje testova

  1. Idite na http://demo.guru99.com/test/guru99home/
  2. U odjeljku "Nekoliko naših najpopularnijih tečajeva" pretražite sve Web elemente koji su brata ili sestre WebElementa čiji je tekst "SELENIUM"
  3. Naći ćemo element pomoću XPath teksta koji sadrži, pretka i funkciju sestre.

KORIŠTENJE Sadrži i XPath sibling

import java.util.List;import java.util.concurrent.TimeUnit;uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.WebElement;uvoz org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;javna klasa SiblingAndParentInXpath {@Testjavna void testSiblingAndParentInXpath () {Upravljački program za WebDriver;String driverPath = "C: \\ geckodriver.exe";System.setProperty ("webdriver.gecko.driver", driverPath);upravljački program = novi FirefoxDriver ();driver.manage (). timeouts (). implicitnoWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Element pretraživanja unutar 'Popularnog tečaja' koji su brata i kontrola 'SELENIUM', Ovdje ćemo prvo pronaći h2 čiji je tekst '' Nekoliko naših najpopularnijih tečajeva ', a zatim prelazimo na njegov nadređeni element koji je' div ', unutar ovog div-a naći ćemo vezu čiji je tekst' SELENIUM ', a zatim ćemo napokon pronaći sve elemente braće i sestara ove veze (' SELENIUM ')Popis  dateBox = driver.findElements (By.xpath ("// h2 [sadrži (tekst (), 'Nekoliko naših najpopularnijih tečajeva')] / nadređeni :: div // div [// a [tekst () = 'SELENIUM']] / slijedeći brat ili sestra :: div [@ class = 'rt-grid-2 rt-omega'] "));// ispisati sve koji pripadaju elementu koji je nazvan 'SELENIUM' u 'Popularni tečaj'za (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}driver.close ();}}

Izlaz će biti kao:

Predak u Selenium Webdriveru

Predak u Selenium Webdriver je funkcija koja se koristi za pronalaženje pretka određenog člana na navedenom sloju. Razina pretka koji se vraća ili razina pretka u odnosu na razinu člana mogu se izričito odrediti. Vraća broj hijerarhijskih koraka od pretka, locirajući određenog pretka kojeg korisnik želi.

Sada pretpostavimo da moramo pretražiti sve elemente u odjeljku "Popularni tečaj" uz pomoć pretka sidra čiji je tekst "SELENIUM"

Ovdje će naš upit xpath biti sličan

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

Potpuni kod

import java.util.List;import java.util.concurrent.TimeUnit;uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.Keys;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.WebElement;uvoz org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;javna klasa AncestorInXpath {@Testjavna void testAncestorInXpath () {Upravljački program za WebDriver = novi FirefoxDriver ();driver.manage (). timeouts (). implicitnoWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Pretraži sve elemente u odjeljku "Popularni tečaj"// uz pomoć pretka sidra čiji je tekst 'SELENIUM'Popis  dateBox = driver.findElements (By.xpath ("// div [.// a [text () = 'SELENIUM']] / predak :: div [@ class = 'rt-grid-2 rt- omega '] / slijedeći brat ili sestra :: div "));// ispisati sve koji su rođeni od elementa nazvanog 'SELENIUM' u 'Popularni tečaj'za (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}driver.quit ();}}

Izlaz će izgledati kao-

Korištenje AND i OR

Korištenjem AND i OR u naš XPath izraz možete staviti 2 uvjeta.

  • U slučaju AND i oba 2 uvjeta trebaju biti istinita, onda samo element pronalazi.
  • U slučaju OR bilo koji od dva uvjeta trebao bi biti istinit, tada samo on pronalazi element.

Ovdje će naš XPath upit biti sličan

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

Ispitni koraci:

  1. Idite na http://demo.guru99.com/v1/
  2. U ovom će odjeljku koristiti gornju demo stranicu za pretraživanje elemenata s različitim funkcijama XPath-a.

Element ćete pronaći pomoću osa AND i OR, nadređenih, osi koje započinju s i XPath

I ILI Primjer

uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.WebElement;uvoz org.openqa.selenium.chrome.ChromeDriver;javni razred AND_OR {javna statička void glavna (String [] args) {Upravljački program za WebDriver;WebElement w, x;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");upravljački program = novi ChromeDriver ();// Pokretanje aplikacijedriver.get ("https://www.guru99.com/");// Pretraživanje elementa pomoću ILI u xpathuw = driver.findElement (By.xpath ("// * [@ type = 'submit' OR @ name = 'btnReset']"));// Ispis teksta elementaSystem.out.println (w.getText ());// Pretraživanje elementa pomoću AND u xpathux = driver.findElement (By.xpath ("// input [@ type = 'submit' and @ name = 'btnLogin']"));// Ispis teksta traženog elementaSystem.out.println (x.getText ());// Zatvorite preglednikdriver.quit ();}}

Što je roditelj u selenu?

Roditelj u seleniju je metoda koja se koristi za dohvaćanje nadređenog čvora trenutnog čvora odabranog na web stranici. Vrlo je korisno u situaciji kada odaberete element i trebate dobiti nadređeni element pomoću Xpatha. Ova se metoda koristi i za dobivanje roditelja roditelja.

Ovdje će naš XPath upit biti sličan

Xpath = // * [@ id = 'rt-feature'] // nadređeni :: div

XPath pomoću roditelja

uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.WebElement;uvoz org.openqa.selenium.chrome.ChromeDriver;javni razred roditelj {javna statička void glavna (String [] args) {Upravljački program za WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");upravljački program = novi ChromeDriver ();// Pokretanje aplikacijedriver.get ("https://www.guru99.com/");// Pretraživanje elementa pomoću PARENTw = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // nadređeni :: div"));// Ispis teksta traženog elementaSystem.out.println (w.getText ());// Zatvorite preglednikdriver.quit ();}}

Počinje sa

Pomoću funkcije Starts-with možete pronaći element čiji se atribut dinamički mijenja pri osvježavanju ili drugim operacijama poput klika, slanja itd.

Ovdje će naš XPath upit biti sličan

Xpath = // oznaka [započinje s (@ id, 'poruka')]

uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.WebElement;uvoz org.openqa.selenium.chrome.ChromeDriver;javna klasa StartsWith {javna statička void glavna (String [] args) {Upravljački program za WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");upravljački program = novi ChromeDriver ();// Pokretanje aplikacijedriver.get ("https://www.guru99.com/");// Pretraživanje elementa pomoću start-withw = driver.findElement (By.xpath ("// oznaka [započinje s (@ id, 'poruka')]"));// Ispis teksta traženog elementaSystem.out.println (w.getText ());// Zatvorite preglednikdriver.quit ();}}

Xpath osi

Korištenjem XPath osi možete pronaći dinamične i vrlo složene elemente na web stranici. XPath osi sadrže nekoliko metoda za pronalaženje elementa. Ovdje ćemo razgovarati o nekoliko metoda.

sljedeće : Ova će funkcija vratiti neposredni element određene komponente.

Ovdje će naš XPath upit biti sličan

Xpath = // * [@ type = 'text'] // slijedi :: input

XPath koristeći sljedeće

uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.WebElement;uvoz org.openqa.selenium.chrome.ChromeDriver;javni razred Slijedi {javna statička void glavna (String [] args) {Upravljački program za WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");upravljački program = novi ChromeDriver ();// Pokretanje aplikacijedriver.get ("https://www.guru99.com/");// Pretraživanje elementa pomoću sljedeće metodew = driver.findElement (By.xpath ("// * [@ type = 'text'] // slijedeći :: input"));// Ispis teksta traženog elementaSystem.out.println (w.getText ());// Zatvorite preglednikdriver.quit ();}}

Prethodno: Ova će funkcija vratiti prethodni element određenog elementa.

Ovdje će naš XPath upit biti sličan

Xpath = // * [@ type = 'submit'] // prethodi :: input

XPath pomoću Precedinga

uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.WebElement;uvoz org.openqa.selenium.chrome.ChromeDriver;javni razred Preceding {javna statička void glavna (String [] args) {Upravljački program za WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");upravljački program = novi ChromeDriver ();// Pokretanje aplikacijedriver.get ("https://www.guru99.com/");// Pretraživanje elementa pomoću prethodne metodew = driver.findElement (By.xpath ("// * [@ type = 'submit'] // prethodni :: input"));// Ispis traženog elementaSystem.out.println (w.getText ());// Zatvorite preglednikdriver.quit ();}}

d) Descendant: Ova će funkcija vratiti potomstveni element određenog elementa.

Ovdje će naš XPath upit biti sličan

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

XPath pomoću Descendenta

uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.WebElement;uvoz org.openqa.selenium.chrome.ChromeDriver;javni razred Potomak {javna statička void glavna (String [] args) {Upravljački program za WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");upravljački program = novi ChromeDriver ();// Pokretanje aplikacijedriver.get ("https://www.guru99.com/");// Pretraživanje elementa metodom potomstvaw = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // potomak :: a"));// Ispis traženog elementaSystem.out.println (w.getText ());// Zatvorite preglednikdriver.quit ();}}

Sažetak

  • Postoje neke situacije kada se uobičajeni XPath ne može koristiti za pronalaženje elementa. U takvoj situaciji trebamo različite funkcije od upita xpath.
  • Tu postoje neke važne XPath funkcije poput XPath, roditelj, preci, sljedbenici itd.
  • Uz pomoć ovih funkcija možete stvoriti složene XPath izraze.