XPath vsebuje, po bratu, predniku & Selen IN / ALI

Kazalo:

Anonim

Če preprost XPath ne more najti zapletenega spletnega elementa za naš testni skript, moramo uporabiti funkcije iz knjižnice XPath 1.0. S kombinacijo teh funkcij lahko ustvarimo natančnejši XPath. Pogovorimo se o 3 takih funkcijah -

  1. Vsebuje
  2. Brat ali sestra
  3. Prednik
  4. In ALI
  5. Starš
  6. Začne se z
  7. XPath osi

Podrobno jih preučimo -

Kaj vsebuje () v selenu?

vsebuje () v seleniju je funkcija znotraj izraza Xpath, ki se uporablja za iskanje spletnih elementov, ki vsebujejo določeno besedilo. Vse elemente, ki se ujemajo z dano besedilno vrednostjo, lahko izvlečemo s pomočjo funkcije XPath contains () po celotni spletni strani. Vsebuje v XPathu ima možnost najti element z delnim besedilom.

Napr. Tu iščemo sidro. Vsebuje besedilo kot 'SAP M'.

"// h4 / a [vsebuje (besedilo (), 'SAP M')]"

OPOMBA: Na tej http://demo.guru99.com/test/selenium-xpath.html lahko izvajate naslednjo vajo XPath

Kaj je brat in sestra v programu Selenium Webdriver?

Sorodstvena v Selen Webdriver je funkcija se uporablja za puščati spletno element, ki je brat na matični element. Če je nadrejeni element znan, lahko spletni element enostavno najdemo ali najdemo, ki lahko uporablja atribut brata in sestre izraza Xpath v selenium webdriver.

Primer sorojenca v XPathu: Tukaj na podlagi sorodstvenega elementa 'a' najdemo 'h4'

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

Prednik : Za iskanje elementa na podlagi nadrejenega elementa lahko uporabimo atribut prednika XPath.

Razumejmo te 3 funkcije na primeru -

Preizkusni koraki

Opomba: Od datuma ustvarjanja vadnice je bila domača stran Guru99 posodobljena, zato namesto tega zaženite preskusno spletno mesto in zaženite teste

  1. Pojdite na http://demo.guru99.com/test/guru99home/
  2. V razdelku "Nekaj ​​naših najbolj priljubljenih tečajev" poiščite vse spletne elemente, ki so brat ali sestra WebElementa, katerega besedilo je "SELENIUM"
  3. Element bomo našli z uporabo besedila XPath, funkcije prednika in brata.

UPORABA Vsebuje in XPath Sibling

uvoz java.util.List;uvoz 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;javni razred SiblingAndParentInXpath {@Testpublic void testSiblingAndParentInXpath () {Gonilnik WebDriver;String driverPath = "C: \\ geckodriver.exe";System.setProperty ("webdriver.gecko.driver", driverPath);voznik = novi FirefoxDriver ();driver.manage (). timeouts (). implicitnoWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Iskanje elementa znotraj 'Popular course', ki je sorodnik nadzora 'SELENIUM', Tu najprej najdemo h2, katerega besedilo je '' Nekaj ​​naših najbolj priljubljenih tečajev ', nato preidemo na njegov nadrejeni element, ki je' div ', znotraj tega divja bomo našli povezavo, katere besedilo je „SELENIUM“, nato pa bomo končno našli vse sorodstvene elemente te povezave („SELENIUM“)Seznam  dateBox = driver.findElements (By.xpath ("// h2 [vsebuje (besedilo (), 'Nekaj ​​naših najbolj priljubljenih tečajev')] / nadrejeni :: div // div [// a [besedilo () = 'SELENIUM']] / naslednik / sestra :: div [@ class = 'rt-grid-2 rt-omega'] "));// Natisni vse elemente, ki so povezani z elementom, imenovanim "SELENIUM" v "Popular course"za (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}driver.close ();}}

Rezultat bo takšen:

Prednik v Selenium Webdriver

Prednik v programu Selenium Webdriver je funkcija, ki se uporablja za iskanje prednika določenega člana na določeni plasti. Izrecno lahko določite raven prednika, ki se vrne, ali raven prednika glede na raven člana. Od prednika vrne število hierarhičnih korakov in poišče določenega prednika, ki ga želi uporabnik.

Zdaj predpostavimo, da moramo poiskati vse elemente v razdelku "Popularni tečaj" s pomočjo prednika sidra, katerega besedilo je "SELENIUM"

Tu bo naša poizvedba xpath všeč

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

Popolna koda

uvoz java.util.List;uvoz 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;javni razred AncestorInXpath {@Testpublic void testAncestorInXpath () {Gonilnik WebDriver = novi FirefoxDriver ();driver.manage (). timeouts (). implicitnoWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Išči po vseh elementih v razdelku "Priljubljeni tečaj"// s pomočjo prednika sidra, katerega besedilo je "SELENIUM"Seznam  dateBox = driver.findElements (By.xpath ("// div [.// a [text () = 'SELENIUM']] / prednik :: div [@ class = 'rt-grid-2 rt- omega '] / naslednik / sestra :: div "));// Natisni vse elemente, ki so povezani z elementom, imenovanim 'SELENIUM' v 'Popular course'za (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}driver.quit ();}}

Rezultat bo videti kot-

Uporaba AND in OR

Z uporabo AND in OR lahko v naš izraz XPath postavite 2 pogoja.

  • V primeru AND morata biti oba pogoja resnična, potem le element najde.
  • V primeru ALI mora biti kateri koli od dveh pogojev resničen, potem le element najde.

Tu bo naša poizvedba XPath podobna

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

Preskusni koraki:

  1. Pojdite na http://demo.guru99.com/v1/
  2. V razdelku bo uporabil zgornjo predstavitveno spletno stran za iskanje elementov z različnimi funkcijami XPath.

Element boste našli z uporabo osi AND in OR, nadrejene osi, osi za zagon in XPath

IN ALI primer

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 {public static void main (String [] args) {Gonilnik WebDriver;WebElement w, x;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");gonilnik = nov ChromeDriver ();// Zaženite aplikacijodriver.get ("https://www.guru99.com/");// Iskanje elementa z uporabo OR v xpathw = driver.findElement (By.xpath ("// * [@ type = 'submit' OR @ name = 'btnReset']"));// Natisni besedilo elementaSystem.out.println (w.getText ());// Iskanje elementa z uporabo AND v xpathx = driver.findElement (By.xpath ("// input [@ type = 'submit' and @ name = 'btnLogin']"));// Natisni besedilo iskanega elementaSystem.out.println (x.getText ());// Zaprite brskalnikdriver.quit ();}}

Kaj je starš v selenu?

Starš v seleniju je metoda, ki se uporablja za pridobivanje nadrejenega vozlišča trenutnega vozlišča, izbranega na spletni strani. To je zelo koristno v primeru, ko izberete element in morate nadrejeni element dobiti s pomočjo Xpath. Ta metoda se uporablja tudi za pridobivanje staršev starša.

Tu bo naša poizvedba XPath podobna

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

XPath z uporabo staršev

uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.WebElement;uvoz org.openqa.selenium.chrome.ChromeDriver;javni razred starš {public static void main (String [] args) {Gonilnik WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");gonilnik = nov ChromeDriver ();// Zaženite aplikacijodriver.get ("https://www.guru99.com/");// Iskanje elementa z uporabo PARENTw = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // nadrejeni :: div"));// Natisni besedilo iskanega elementaSystem.out.println (w.getText ());// Zaprite brskalnikdriver.quit ();}}

Začne se s

S pomočjo funkcije Začne s, lahko najdete element, katerega atribut se dinamično spreminja pri osvežitvi ali drugih operacijah, kot so klik, oddaja itd.

Tu bo naša poizvedba XPath podobna

Xpath = // oznaka [začne se z (@ id, 'sporočilo')]

uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.WebElement;uvoz org.openqa.selenium.chrome.ChromeDriver;javni razred StartsWith {public static void main (String [] args) {Gonilnik WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");gonilnik = nov ChromeDriver ();// Zaženite aplikacijodriver.get ("https://www.guru99.com/");// Iskanje elementa z uporabo start-withw = driver.findElement (By.xpath ("// oznaka [se začne s (@ id, 'sporočilo')]"));// Natisni besedilo iskanega elementaSystem.out.println (w.getText ());// Zaprite brskalnikdriver.quit ();}}

Osi Xpath

Z uporabo osi XPath lahko najdete dinamične in zelo zapletene elemente na spletni strani. Osi XPath vsebujejo več načinov za iskanje elementa. Tukaj bomo razpravljali o nekaj metodah.

naslednje : Ta funkcija bo vrnila neposredni element določene komponente.

Tu bo naša poizvedba XPath podobna

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

XPath z uporabo naslednjega

uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.WebElement;uvoz org.openqa.selenium.chrome.ChromeDriver;javni razred Sledi {public static void main (String [] args) {Gonilnik WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");gonilnik = nov ChromeDriver ();// Zaženite aplikacijodriver.get ("https://www.guru99.com/");// Iskanje elementa z uporabo naslednje metodew = driver.findElement (By.xpath ("// * [@ type = 'text'] // naslednji :: input"));// Natisni besedilo iskanega elementaSystem.out.println (w.getText ());// Zaprite brskalnikdriver.quit ();}}

Predhodno: Ta funkcija bo vrnila prejšnji element določenega elementa.

Tu bo naša poizvedba XPath podobna

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

XPath z uporabo predhodnega

uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.WebElement;uvoz org.openqa.selenium.chrome.ChromeDriver;javni razred Preceding {public static void main (String [] args) {Gonilnik WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");gonilnik = nov ChromeDriver ();// Zaženite aplikacijodriver.get ("https://www.guru99.com/");// Iskanje elementa s predhodno metodow = driver.findElement (By.xpath ("// * [@ type = 'submit'] // predhodno :: input"));// Natisni iskani elementSystem.out.println (w.getText ());// Zaprite brskalnikdriver.quit ();}}

d) Descendant: Ta funkcija bo vrnila padajoči element določenega elementa.

Tu bo naša poizvedba XPath podobna

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

XPath z uporabo potomca

uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.WebElement;uvoz org.openqa.selenium.chrome.ChromeDriver;javni razred Potomak {public static void main (String [] args) {Gonilnik WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");gonilnik = nov ChromeDriver ();// Zaženite aplikacijodriver.get ("https://www.guru99.com/");// Iskanje elementa z uporabo metode potomcaw = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // potomec :: a"));// Natisni iskani elementSystem.out.println (w.getText ());// Zaprite brskalnikdriver.quit ();}}

Povzetek

  • V nekaterih primerih ni mogoče uporabiti običajnega XPath za iskanje elementa. V takem primeru potrebujemo drugačne funkcije od poizvedbe xpath.
  • Obstaja nekaj pomembnih funkcij XPath, kot je XPath, nadrejeni, predniki, sorodniki itd.
  • S pomočjo teh funkcij lahko ustvarite zapletene izraze XPath.