XPath inneholder, følger søsken, forfedre og amp; Selen OG / ELLER

Innholdsfortegnelse:

Anonim

Hvis en enkel XPath ikke klarer å finne et komplisert webelement for testskriptet vårt, må vi bruke funksjonene fra XPath 1.0-biblioteket. Med kombinasjonen av disse funksjonene kan vi lage mer spesifikk XPath. La oss diskutere 3 slike funksjoner -

  1. Inneholder
  2. Søsken
  3. Forfedre
  4. Og ELLER
  5. Foreldre
  6. Begynner med
  7. XPath Axes

La oss studere dem i detalj -

Hva inneholder inneholder () i selen?

inneholder () i Selen er en funksjon i Xpath-uttrykk som brukes til å søke etter webelementene som inneholder en bestemt tekst. Vi kan trekke ut alle elementene som samsvarer med den gitte tekstverdien ved hjelp av XPath inneholder () -funksjonen på hele websiden. Inneholder i XPath har evnen til å finne elementet med delvis tekst.

Eks. Her søker vi et anker. Inneholder tekst som 'SAP M'.

"// h4 / a [inneholder (tekst (), 'SAP M')]"

MERKNAD: Du kan øve på følgende XPath-øvelse på denne http://demo.guru99.com/test/selenium-xpath.html

Hva er søsken i Selenium Webdriver?

Et søsken i Selenium Webdriver er en funksjon som brukes til å hente et webelement som er et søsken til det overordnede elementet. Hvis det overordnede elementet er kjent, kan nettelementet lett bli funnet eller lokalisert som kan bruke søskenattributtet til Xpath-uttrykket i selen webdriver.

Søsken i XPath Eksempel: Her på grunnlag av søskenelement av 'a' finner vi 'h4'

"// div [@ class = 'canvas- graph'] // a [@href = '/ accounting.html'] [i [@ class = 'icon-usd']] / søsken til søsken :: h4"

Forfader : For å finne et element på grunnlag av det overordnede elementet, kan vi bruke forfaderattributtet til XPath.

La oss forstå disse 3 funksjonene ved hjelp av et eksempel -

Teststrinn

Merk: Siden datoen for opplæringen ble hjemmesiden til Guru99 oppdatert, så bruk demosiden i stedet for å kjøre tester

  1. Gå til http://demo.guru99.com/test/guru99home/
  2. I avsnittet "Noen av våre mest populære kurs", søk i alle nettelementer som er søsken til et WebElement som har teksten "SELENIUM"
  3. Vi finner element ved hjelp av XPath-tekst inneholder, forfedre og søskenfunksjon.

BRUK Inneholder og XPath søsken

importere java.util.List;importere java.util.concurrent.TimeUnit;importer org.openqa.selenium.By;importer org.openqa.selenium.WebDriver;importer org.openqa.selenium.WebElement;importer org.openqa.selenium.firefox.FirefoxDriver;importer org.testng.annotations.Test;offentlig klasse SiblingAndParentInXpath {@Testpublic void testSiblingAndParentInXpath () {WebDriver driver;Streng driverPath = "C: \\ geckodriver.exe";System.setProperty ("webdriver.gecko.driver", driverPath);driver = ny FirefoxDriver ();driver.manage (). timeouts (). implicitly Waait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Søkeelement i 'Populært kurs' som er søsken til kontroll 'SELENIUM'. Her finner vi først en H2 som har teksten 'Noen av våre mest populære kurs', så går vi til det overordnede elementet som er et ' div ', inne i denne div vil vi finne en lenke som har teksten' SELENIUM ', og til slutt vil vi finne alle søskenelementene i denne lenken (' SELENIUM ')Liste  dateBox = driver.findElements (By.xpath ("// h2 [inneholder (tekst (), 'Noen av våre mest populære kurs')] / foreldre :: div // div [// a [tekst () = 'SELENIUM']] / følgesøsken :: div [@ class = 'rt-grid-2 rt-omega'] "));// Skriv ut alle søsken til det elementet som heter "SELENIUM" i "Populært kurs"for (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}driver.close ();}}

Produksjonen vil være som:

Forfader i Selen Webdriver

Ancestor in Selenium Webdriver er en funksjon som brukes til å finne forfaren til et bestemt medlem ved det angitte laget. Forfedrenivået som skal returneres eller forfedrenes nivå i forhold til medlemmets nivå kan spesifiseres. Den returnerer antall hierarkiske trinn fra forfedren, og finner den angitte forfedren som brukeren ønsker.

Anta at vi må søke i alle elementene i delen "Populær kurs" ved hjelp av forfedre til ankeret hvis tekst er "SELENIUM"

Her vil xpath-spørringen være som

"//divia [.//a [tekst()='SELENIUM']] / annestor:: div [@class='rt-grid-2 rt-omega '] / følgesøsken :: div"

Komplett kode

importere java.util.List;importere java.util.concurrent.TimeUnit;importer org.openqa.selenium.By;importer org.openqa.selenium.Keys;importer org.openqa.selenium.WebDriver;importer org.openqa.selenium.WebElement;importer org.openqa.selenium.firefox.FirefoxDriver;importer org.testng.annotations.Test;offentlig klasse AncestorInXpath {@Testpublic void testAncestorInXpath () {WebDriver-driver = ny FirefoxDriver ();driver.manage (). timeouts (). implicitly Waait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Søk i alle elementene i delen "Populært kurs"// ved hjelp av forfedre til ankeret hvis tekst er 'SELENIUM'Liste  dateBox = driver.findElements (By.xpath ("// div [.// a [text () = 'SELENIUM']] / forfader :: div [@ class = 'rt-grid-2 rt- omega '] / følgesøsken :: div "));// Skriv ut alle søsken til elementet som heter 'SELENIUM' i 'Populært kurs'for (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}driver.quit ();}}

Produksjonen vil se ut som-

Bruke AND og OR

Ved å bruke AND og OR kan du sette 2 betingelser i vårt XPath-uttrykk.

  • I tilfelle AND og begge to forholdene skal være sanne, er det bare den som finner elementet.
  • I tilfelle ELLER en av de to betingelsene skal være oppfylt, finner den bare elementet.

Her vil XPath-spørringen være som

Xpath = // * [@ type = 'send inn' ELLER @ navn = 'btnReset']
Xpath = // input [@ type = 'send' og @ name = 'btnLogin']

Teststrinn:

  1. Gå til http://demo.guru99.com/v1/
  2. I delen, vil du bruke ovennevnte demoside for å søke element med forskjellige funksjoner i XPath.

Du finner et element ved hjelp av AND og OR, foreldre, starter med og XPath akser

OG ELLER Eksempel

importer org.openqa.selenium.By;importer org.openqa.selenium.WebDriver;importer org.openqa.selenium.WebElement;importer org.openqa.selenium.chrome.ChromeDriver;offentlig klasse AND_OR {public static void main (String [] args) {WebDriver driver;WebElement m, x;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");driver = ny ChromeDriver ();// Start applikasjonendriver.get ("https://www.guru99.com/");// Søkeelement ved hjelp av OR i xpathw = driver.findElement (By.xpath ("// * [@ type = 'submit' ELLER @ name = 'btnReset']"));// Skriv ut teksten til elementetSystem.out.println (w.getText ());// Søkelement ved hjelp av AND i xpathx = driver.findElement (By.xpath ("// input [@ type = 'send' og @ name = 'btnLogin']"));// Skriv ut teksten til det søkte elementetSystem.out.println (x.getText ());// Lukk nettleserendriver.quit ();}}

Hva er foreldre i selen?

Parent in Selenium er en metode som brukes til å hente foreldrenoden til den nåværende noden som er valgt på websiden. Det er veldig nyttig i situasjonen når du velger et element og trenger å hente det overordnede elementet ved hjelp av Xpath. Denne metoden brukes også for å få foreldrenes foreldre.

Her vil XPath-spørringen være som

Xpath = // * [@ id = 'rt-funksjon'] // foreldre :: div

XPath ved hjelp av foreldre

importer org.openqa.selenium.By;importer org.openqa.selenium.WebDriver;importer org.openqa.selenium.WebElement;importer org.openqa.selenium.chrome.ChromeDriver;offentlig klasse Foreldre {public static void main (String [] args) {WebDriver driver;WebElement m;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");driver = ny ChromeDriver ();// Start applikasjonendriver.get ("https://www.guru99.com/");// Søk i elementet ved hjelp av PARENTw = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // foreldre :: div"));// Skriv ut teksten til det søkte elementetSystem.out.println (w.getText ());// Lukk nettleserendriver.quit ();}}

Begynner med

Ved å bruke Starts-with-funksjonen kan du finne elementet hvis attributt endres dynamisk ved oppdatering eller andre operasjoner som klikk, send osv.

Her vil XPath-spørringen være som

Xpath = // label [starts-with (@ id, 'message')]

importer org.openqa.selenium.By;importer org.openqa.selenium.WebDriver;importer org.openqa.selenium.WebElement;importer org.openqa.selenium.chrome.ChromeDriver;offentlig klasse StartsWith {public static void main (String [] args) {WebDriver driver;WebElement m;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");driver = ny ChromeDriver ();// Start applikasjonendriver.get ("https://www.guru99.com/");// Søk i elementet ved å bruke starter medw = driver.findElement (By.xpath ("// label [starts-with (@ id, 'message')]"));// Skriv ut teksten til det søkte elementetSystem.out.println (w.getText ());// Lukk nettleserendriver.quit ();}}

Xpath-akser

Ved å bruke XPath-akser kan du finne de dynamiske og svært komplekse elementene på en webside. XPath-akser inneholder flere metoder for å finne et element. Her vil vi diskutere noen få metoder.

følgende : Denne funksjonen returnerer det umiddelbare elementet til den bestemte komponenten.

Her vil XPath-spørringen være som

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

XPath bruker følgende

importer org.openqa.selenium.By;importer org.openqa.selenium.WebDriver;importer org.openqa.selenium.WebElement;importer org.openqa.selenium.chrome.ChromeDriver;offentlig klasse Etter {public static void main (String [] args) {WebDriver driver;WebElement m;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");driver = ny ChromeDriver ();// Start applikasjonendriver.get ("https://www.guru99.com/");// Søk i elementet ved hjelp av Følgende metodew = driver.findElement (By.xpath ("// * [@ type = 'text'] // following :: input"));// Skriv ut teksten til det søkte elementetSystem.out.println (w.getText ());// Lukk nettleserendriver.quit ();}}

Foregående: Denne funksjonen returnerer det forrige elementet til det bestemte elementet.

Her vil XPath-spørringen være som

Xpath = // * [@ type = 'submit'] // foregående :: input

XPath ved hjelp av foregående

importer org.openqa.selenium.By;importer org.openqa.selenium.WebDriver;importer org.openqa.selenium.WebElement;importer org.openqa.selenium.chrome.ChromeDriver;offentlig klasse før {public static void main (String [] args) {WebDriver driver;WebElement m;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");driver = ny ChromeDriver ();// Start applikasjonendriver.get ("https://www.guru99.com/");// Søk i elementet ved å bruke foregående metodew = driver.findElement (By.xpath ("// * [@ type = 'submit'] // foregående :: input"));// Skriv ut det søkte elementetSystem.out.println (w.getText ());// Lukk nettleserendriver.quit ();}}

d) Avstamning: Denne funksjonen returnerer etterkommende element av det spesielle elementet.

Her vil XPath-spørringen være som

Xpath = // * [@ id = 'rt-funksjon'] // etterkommer :: a

XPath bruker Descendant

importer org.openqa.selenium.By;importer org.openqa.selenium.WebDriver;importer org.openqa.selenium.WebElement;importer org.openqa.selenium.chrome.ChromeDriver;offentlig klasse Etterkommer {public static void main (String [] args) {WebDriver driver;WebElement m;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");driver = ny ChromeDriver ();// Start applikasjonendriver.get ("https://www.guru99.com/");// Søk i elementet ved å bruke avstammende metodew = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // descendant :: a"));// Skriv ut det søkte elementetSystem.out.println (w.getText ());// Lukk nettleserendriver.quit ();}}

Sammendrag

  • Det er noen situasjoner når vanlig XPath ikke kan brukes til å finne et element. I en slik situasjon trenger vi forskjellige funksjoner fra xpath-spørringen.
  • Det er noen viktige XPath-funksjoner som XPath inneholder, foreldre, forfedre, søsken, etc.
  • Ved hjelp av disse funksjonene kan du lage komplekse XPath-uttrykk.