XPath sisältää, Sisaruksen seuraaja, Esivanhempi & Seleeni JA / TAI

Sisällysluettelo:

Anonim

Jos yksinkertainen XPath ei löydä monimutkaista verkkoelementtiä testiskriptiimme, meidän on käytettävä XPath 1.0 -kirjaston toimintoja. Näiden toimintojen yhdistelmällä voimme luoda tarkemman XPath-version. Keskustellaan 3 tällaisesta toiminnosta -

  1. Sisältää
  2. Sisar
  3. Esivanhempi
  4. Ja tai
  5. Vanhempi
  6. Alkaa
  7. XPath-akselit

Tutkitaan niitä yksityiskohtaisesti -

Mitä seleeni sisältää ()?

sisältää () seleniumissa on Xpath-lausekkeen funktio, jota käytetään etsimään verkkoelementtejä, jotka sisältävät tietyn tekstin. Voimme purkaa kaikki annettua tekstiarvoa vastaavat elementit XPath contains () -toiminnolla koko verkkosivulta. Sisältää XPathissa on kyky löytää elementti osittaisella tekstillä.

Esim. Täällä haemme ankkuria. Sisältää tekstiä nimellä 'SAP M'.

"// h4 / a [sisältää (teksti (), 'SAP M')]"

HUOMAUTUS: Voit harjoitella seuraavaa XPath-harjoitusta tällä http://demo.guru99.com/test/selenium-xpath.html

Mitä sisar on selenium-verkko-ohjaimessa?

Sisarukset in Seleeni Webdriver on toiminto, jota käytetään noutamaan web-elementti, joka on sisarus emoelementin. Jos pääelementti tunnetaan, verkkoelementti voidaan helposti löytää tai löytää, joka voi käyttää Xpath-lausekkeen sisar-attribuuttia seleeni-verkko-ohjaimessa.

Sisar XPathissa Esimerkki: Tässä löydetään 'a': n sisaruselementin perusteella 'h4'

"// div [@ class = 'canvas- graph'] // a [@href = '/ kirjanpito.html'] [i [@ class = 'icon-usd']] / seuraava-sisarus :: h4"

Esivanhempi : Jos haluat löytää elementin vanhemman elementin perusteella, voimme käyttää XPath: n esi-attribuuttia.

Annetaan ymmärtää nämä 3 toimintoa esimerkin avulla -

Testivaiheet

Huomaa: Opetusohjelman luomispäivästä lähtien Guru99: n kotisivu on päivitetty, joten käytä demosivustoa testien suorittamiseen

  1. Siirry osoitteeseen http://demo.guru99.com/test/guru99home/
  2. Etsi osasta 'Muutama suosituimmista kursseistamme' kaikki Web-elementit, jotka ovat sisaruksia WebElementille, jonka teksti on 'SELENIUM'
  3. Löydämme elementin, joka käyttää XPath-tekstiä sisältää, esi-isä ja sisarus-toimintoa.

Sisältää ja XPath-sisarus

tuo java.util.List;tuo java.util.concurrent.TimeUnit;tuo org.openqa.selenium.By;tuo org.openqa.selenium.WebDriver;tuonti org.openqa.selenium.WebElement;tuo org.openqa.selenium.firefox.FirefoxDriver;tuo org.testng.annotations.Test;julkinen luokka SiblingAndParentInXpath {@Testatapublic void testSiblingAndParentInXpath () {WebDriver-ohjain;Merkkijono driverPath = "C: \\ geckodriver.exe";System.setProperty ("webdriver.gecko.driver", driverPath);ohjain = uusi FirefoxDriver ();driver.manage (). timeout (). implisiittisesti Odota (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Hakuelementti 'Suosittu kurssi' -sivulta, joka on 'SELENIUM' -ohjauksen sisar, Täältä löydät ensin h2: n, jonka teksti on '' Muutama suosituimmista kursseistamme '', sitten siirrymme sen pääelementtiin, joka on '' div ', tämän div: n sisällä on linkki, jonka teksti on' SELENIUM ', sitten viimeinkin löydämme kaikki tämän linkin sisarelementit (' SELENIUM ')Luettelo  dateBox = driver.findElements (By.xpath ("// h2 [sisältää (text (), 'Muutama suosituimmista kursseistamme')]] / parent :: div // div [// a [text () = 'SELENIUM']] / seuraaja-sisarus :: div [@ class = 'rt-grid-2 rt-omega'] "));// Tulosta kaikki SELENIUM-nimisen elementin sisarukset Suosittu kurssi -kohdassakohteelle (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}kuljettaja.sulje ();}}

Tulos on kuin:

Esivanhempi Selenium-verkko-ohjaimessa

Selenium Webdriverin esi-isä on toiminto, jota käytetään etsimään tietyn jäsenen esi-isä määritetystä kerroksesta. Palautettavan esi-isän taso tai esi-isän taso suhteessa jäsenen tasoon voidaan erikseen määritellä. Se palauttaa esi-isän hierarkkisten vaiheiden määrän etsimällä määritetyn esi-isän, jonka käyttäjä haluaa.

Oletetaan, että meidän on etsittävä kaikkia osioita "Suosittu kurssi" -osasta ankkurin esi-isän avulla, jonka teksti on "SELENIUM"

Tässä xpath-kyselymme on kuin

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

Täydellinen koodi

tuo java.util.List;tuo java.util.concurrent.TimeUnit;tuo org.openqa.selenium.By;tuonti org.openqa.selenium.Keys;tuo org.openqa.selenium.WebDriver;tuonti org.openqa.selenium.WebElement;tuo org.openqa.selenium.firefox.FirefoxDriver;tuo org.testng.annotations.Test;julkinen luokka AncestorInXpath {@Testatapublic void testAncestorInXpath () {WebDriver-ohjain = uusi FirefoxDriver ();driver.manage (). timeout (). implisiittisesti Odota (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Hae kaikista osista Suosittu kurssi// ankkurin esi-isän avulla, jonka teksti on 'SELENIUM'Luettelo  dateBox = driver.findElements (By.xpath ("// div [.// a [text () = 'SELENIUM']] / esi-isä :: div [@ class = 'rt-grid-2 rt- omega '] / seuraava sisarus :: div "));// Tulosta kaikki SELENIUM-nimisen elementin sisarukset Suosittu kurssi -kohdassakohteelle (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}kuljettaja. lopeta ();}}

Tuotos näyttää-

AND- ja OR-näppäinten käyttö

AND- ja OR-näppäimillä voit laittaa kaksi ehtoa XPath-lausekkeeseemme.

  • AND: n tapauksessa molempien kahden ehdon pitäisi olla totta, vain se löytää elementin.
  • Jos kyseessä on OR, jommankumman ehdoista pitäisi olla totta, vain se löytää elementin.

Tässä XPath-kyselymme tulee olemaan

Xpath = // * [@ type = 'lähetä' TAI @ nimi = 'btnReset']
Xpath = // input [@ type = 'lähetä' ja @ name = 'btnLogin']

Testivaiheet:

  1. Siirry osoitteeseen http://demo.guru99.com/v1/
  2. Tässä osiossa käytetään yllä olevaa demosivustoa hakemaan elementtiä XPathin eri toiminnoilla.

Löydät elementin käyttämällä AND- ja OR-, parent-, start-with- ja XPath-akseleita

JA TAI Esimerkki

tuo org.openqa.selenium.By;tuo org.openqa.selenium.WebDriver;tuonti org.openqa.selenium.WebElement;tuo org.openqa.selenium.chrome.ChromeDriver;julkinen luokka AND_OR {public staattinen void main (String [] argumentoi) {WebDriver-ohjain;WebElement w, x;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");ohjain = uusi ChromeDriver ();// Käynnistä sovellusdriver.get ("https://www.guru99.com/");// Hakuelementti käyttämällä OR OR xpathissaw = driver.findElement (By.xpath ("// * [@ type = 'lähetä' TAI @ nimi = 'btnReset']"));// Tulosta elementin tekstiSystem.out.println (w.getText ());// Hakuelementti käyttämällä x-polussa AND: täx = driver.findElement (By.xpath ("// syöte [@ type = 'lähetä' ja @ nimi = 'btnLogin']"));// Tulosta haetun elementin tekstiSystem.out.println (x.getText ());// Sulje selainkuljettaja. lopeta ();}}

Mikä on vanhempi seleenissä?

Parent in Selenium on menetelmä, jolla haetaan verkkosivulla valitun nykyisen solmun yläsolmu. Se on erittäin hyödyllinen tilanteessa, jossa valitset elementin ja sinun on hankittava pääelementti Xpath-sovelluksella. Tätä menetelmää käytetään myös vanhempien vanhempien saamiseen.

Tässä XPath-kyselymme tulee olemaan

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

XPath käyttää vanhempaa

tuo org.openqa.selenium.By;tuo org.openqa.selenium.WebDriver;tuonti org.openqa.selenium.WebElement;tuo org.openqa.selenium.chrome.ChromeDriver;julkinen luokka Vanhempipublic staattinen void main (String [] argumentoi) {WebDriver-ohjain;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");ohjain = uusi ChromeDriver ();// Käynnistä sovellusdriver.get ("https://www.guru99.com/");// Hae elementtiä PARENTillaw = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // parent :: div"));// Tulosta haetun elementin tekstiSystem.out.println (w.getText ());// Sulje selainkuljettaja. lopeta ();}}

Alkaa -

Käynnistys-toiminnolla voit löytää elementin, jonka attribuutti muuttuu dynaamisesti päivityksessä tai muissa toiminnoissa, kuten napsautus, lähetys jne.

Tässä XPath-kyselymme tulee olemaan

Xpath = // tunniste [alkaa-kanssa (@ id, 'viesti')]

tuo org.openqa.selenium.By;tuo org.openqa.selenium.WebDriver;tuonti org.openqa.selenium.WebElement;tuo org.openqa.selenium.chrome.ChromeDriver;julkinen luokka alkaa {public staattinen void main (String [] argumentoi) {WebDriver-ohjain;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");ohjain = uusi ChromeDriver ();// Käynnistä sovellusdriver.get ("https://www.guru99.com/");// Hae elementtiä käyttämällä start-withw = driver.findElement (By.xpath ("// tunniste [alkaa-kanssa (@ id, 'viesti')]"));// Tulosta haetun elementin tekstiSystem.out.println (w.getText ());// Sulje selainkuljettaja. lopeta ();}}

Xpath-akselit

XPath-akseleita käyttämällä löydät verkkosivulta dynaamiset ja erittäin monimutkaiset elementit. XPath-akselit sisältävät useita tapoja löytää elementti. Tässä keskustellaan muutamista menetelmistä.

seuraava : Tämä toiminto palauttaa komponentin välittömän elementin.

Tässä XPath-kyselymme tulee olemaan

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

XPath käyttää seuraavaa

tuo org.openqa.selenium.By;tuo org.openqa.selenium.WebDriver;tuonti org.openqa.selenium.WebElement;tuo org.openqa.selenium.chrome.ChromeDriver;julkinen luokka seuraa {public staattinen void main (String [] argumentoi) {WebDriver-ohjain;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");ohjain = uusi ChromeDriver ();// Käynnistä sovellusdriver.get ("https://www.guru99.com/");// Hae elementtiä seuraamalla -menetelmääw = driver.findElement (By.xpath ("// * [@ type = 'text'] // seuraava :: input"));// Tulosta haetun elementin tekstiSystem.out.println (w.getText ());// Sulje selainkuljettaja. lopeta ();}}

Edeltävä: Tämä toiminto palauttaa tietyn elementin edellisen elementin.

Tässä XPath-kyselymme tulee olemaan

Xpath = // * [@ type = 'lähetä'] // edeltävä :: input

XPath käyttäen edeltävää

tuo org.openqa.selenium.By;tuo org.openqa.selenium.WebDriver;tuonti org.openqa.selenium.WebElement;tuo org.openqa.selenium.chrome.ChromeDriver;julkinen luokka edeltävä {public staattinen void main (String [] argumentoi) {WebDriver-ohjain;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");ohjain = uusi ChromeDriver ();// Käynnistä sovellusdriver.get ("https://www.guru99.com/");// Hae elementistä edellisen menetelmän avullaw = driver.findElement (By.xpath ("// * [@ type = 'lähetä'] // edellinen :: input"));// Tulosta haettu elementtiSystem.out.println (w.getText ());// Sulje selainkuljettaja. lopeta ();}}

d) Jälkeläinen: Tämä funktio palauttaa tietyn elementin jälkeläisen.

Tässä XPath-kyselymme tulee olemaan

Xpath = // * [@ id = 'rt-feature'] // jälkeläinen :: a

XPath käyttäen jälkeläistä

tuo org.openqa.selenium.By;tuo org.openqa.selenium.WebDriver;tuonti org.openqa.selenium.WebElement;tuo org.openqa.selenium.chrome.ChromeDriver;julkisen luokan jälkeläinen {public staattinen void main (String [] argumentoi) {WebDriver-ohjain;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");ohjain = uusi ChromeDriver ();// Käynnistä sovellusdriver.get ("https://www.guru99.com/");// Hae elementtiä descendant-menetelmälläw = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // jälkeläinen :: a"));// Tulosta haettu elementtiSystem.out.println (w.getText ());// Sulje selainkuljettaja. lopeta ();}}

Yhteenveto

  • Joissakin tilanteissa tavallista XPath-ohjelmaa ei voida käyttää elementin löytämiseen. Tällaisessa tilanteessa tarvitsemme erilaisia ​​toimintoja kuin xpath-kysely.
  • Siellä on joitain tärkeitä XPath-toimintoja, kuten XPath sisältää, vanhemmat, esi-isät, sisarukset jne.
  • Näiden toimintojen avulla voit luoda monimutkaisia ​​XPath-lausekkeita.