XPath conține, după frate, strămoș & Seleniu ȘI / SAU

Cuprins:

Anonim

Dacă un XPath simplu nu reușește să găsească un element web complicat pentru scriptul nostru de testare, trebuie să folosim funcțiile din biblioteca XPath 1.0. Cu combinația acestor funcții, putem crea XPath mai specific. Să discutăm 3 astfel de funcții -

  1. Conține
  2. Sora
  3. Strămoş
  4. ȘI SAU
  5. Mamă
  6. Incepe cu
  7. Axele XPath

Să le studiem în detaliu -

Ce conține () în seleniu?

contain () în Selenium este o funcție din expresia Xpath care este utilizată pentru a căuta elementele web care conțin un anumit text. Putem extrage toate elementele care se potrivesc cu valoarea dată a textului folosind funcția XPath contains () pe toată pagina web. Conține în XPath capacitatea de a găsi elementul cu text parțial.

Ex. Aici căutăm o ancoră. Conține textul „SAP M”.

„// h4 / a [conține (text (),„ SAP M ”)]”

NOTĂ: Puteți practica următorul exercițiu XPath pe acest http://demo.guru99.com/test/selenium-xpath.html

Ce este Sibling în Selenium Webdriver?

A Sibling in Selenium Webdriver este o funcție utilizată pentru a prelua un element web care este un frate al elementului părinte. Dacă elementul părinte este cunoscut, atunci elementul web poate fi găsit sau localizat cu ușurință, care poate utiliza atributul frate al expresiei Xpath în selenium webdriver.

Frate în XPath Exemplu: aici, pe baza elementului frate din „a”, găsim „h4”

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

Strămoș : pentru a găsi un element pe baza elementului părinte putem folosi atributul strămoș al XPath.

Să înțelegem aceste 3 funcții folosind un exemplu -

Pașii de testare

Notă: De la data creării tutorialului, pagina de pornire a Guru99 a fost actualizată, așa că utilizați site-ul de demonstrație pentru a rula teste

  1. Accesați http://demo.guru99.com/test/guru99home/
  2. În secțiunea „Câteva dintre cele mai populare cursuri”, căutați toate elementele web care sunt frate ale unui webElement al cărui text este „SELENIUM”
  3. Vom găsi element care utilizează textul XPath conține, funcția strămoș și frate.

UTILIZARE Conține și 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;clasă publică SiblingAndParentInXpath {@Testpublic void testSiblingAndParentInXpath () {Driver WebDriver;String driverPath = "C: \\ geckodriver.exe";System.setProperty ("webdriver.gecko.driver", driverPath);driver = nou FirefoxDriver ();driver.manage (). timeouts (). implicit Așteptați (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Căutați elementul din „Curs popular” care este frate de control „SELENIUM”. Aici vom găsi mai întâi un h2 al cărui text este „Câteva dintre cele mai populare cursuri”, apoi trecem la elementul său părinte care este un „ div ', în interiorul acestui div vom găsi un link al cărui text este' SELENIUM ', apoi în cele din urmă vom găsi toate elementele frate ale acestui link (' SELENIUM ')Listă  dateBox = driver.findElements (By.xpath ("// h2 [contains (text (), 'Câteva dintre cele mai populare cursuri noastre')) / parent :: div // div [// a [text () = 'SELENIUM']] / following-sibling :: div [@ class = 'rt-grid-2 rt-omega'] "));// Imprimați toate elementele care sunt frate ale elementului denumit „SELENIUM” în „Curs popular”pentru (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}driver.close ();}}

Rezultatul va fi ca:

Strămoș în Selenium Webdriver

Strămoș în Selenium Webdriver este o funcție utilizată pentru a găsi strămoșul unui membru specific la nivelul specificat. Nivelul strămoșului care trebuie returnat sau nivelul strămoșului în raport cu nivelul membruului poate fi specificat în mod explicit. Întoarce numărul de pași ierarhici de la strămoș, localizând strămoșul specificat dorit de utilizator.

Acum, să presupunem că trebuie să căutăm toate elementele din secțiunea „Curs popular” cu ajutorul strămoșului ancorei al cărui text este „SELENIUM”

Aici interogarea noastră xpath va fi ca.

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

Cod complet

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;clasă publică AncestorInXpath {@Testpublic void testAncestorInXpath () {Driver WebDriver = nou FirefoxDriver ();driver.manage (). timeouts (). implicit Așteptați (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Căutați toate elementele în secțiunea „Curs popular”// cu ajutorul strămoșului ancorei al cărui text este „SELENIUM”Listă  dateBox = driver.findElements (By.xpath ("// div [.// a [text () = 'SELENIUM']] / ancestor :: div [@ class = 'rt-grid-2 rt- omega '] / following-sibling :: div "));// Imprimați toate elementele care sunt frate ale elementului denumit „SELENIUM” în „Curs popular”pentru (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}driver.quit ();}}

Rezultatul va arăta ca-

Folosind AND și OR

Utilizând ȘI și SAU puteți pune 2 condiții în expresia noastră XPath.

  • În cazul ȘI ambele 2 condiții ar trebui să fie adevărate, atunci doar el găsește elementul.
  • În cazul SAU, oricare dintre cele 2 condiții ar trebui să fie adevărată, atunci doar el găsește elementul.

Aici interogarea noastră XPath va fi ca.

Xpath = // * [@ type = 'submit' SAU @ name = 'btnReset']
Xpath = // input [@ type = 'submit' și @ name = 'btnLogin']

Etape de testare:

  1. Accesați http://demo.guru99.com/v1/
  2. În secțiune, va folosi site-ul de demonstrație de mai sus pentru a căuta element cu diferite funcții ale XPath.

Veți găsi un element folosind AND și OR, părinte, începe-cu, și axele XPath

ȘI SAU Exemplu

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;clasă publică AND_OR {public static main main (String [] args) {Driver WebDriver;WebElement w, x;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");driver = nou ChromeDriver ();// Lansați aplicațiadriver.get ("https://www.guru99.com/");// Căutați elementul folosind SAU în xpathw = driver.findElement (By.xpath ("// * [@ type = 'submit' OR @ name = 'btnReset']"));// Imprimați textul elementuluiSystem.out.println (w.getText ());// Căutați elementul folosind ȘI în xpathx = driver.findElement (By.xpath ("// input [@ type = 'submit' și @ name = 'btnLogin']"));// Imprimați textul elementului căutatSystem.out.println (x.getText ());// Închideți browseruldriver.quit ();}}

Ce este părintele în seleniu?

Parent in Selenium este o metodă utilizată pentru a prelua nodul părinte al nodului curent selectat în pagina web. Este foarte util în situația în care selectați un element și trebuie să obțineți elementul părinte folosind Xpath. Această metodă este, de asemenea, utilizată pentru a obține părintele părintelui.

Aici interogarea noastră XPath va fi ca.

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

XPath folosind Parent

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;public class Parent {public static main main (String [] args) {Driver WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");driver = nou ChromeDriver ();// Lansați aplicațiadriver.get ("https://www.guru99.com/");// Căutați elementul utilizând PARENTw = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // parent :: div"));// Imprimați textul elementului căutatSystem.out.println (w.getText ());// Închideți browseruldriver.quit ();}}

Incepe cu

Folosind funcția Starts-with, puteți găsi elementul al cărui atribut se modifică dinamic la reîmprospătare sau alte operații precum clic, trimitere etc.

Aici interogarea noastră XPath va fi ca.

Xpath = // etichetă [începe-cu (@ id, „mesaj”)]

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;public class StartsWith {public static main main (String [] args) {Driver WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");driver = nou ChromeDriver ();// Lansați aplicațiadriver.get ("https://www.guru99.com/");// Căutați elementul utilizând starts-withw = driver.findElement (By.xpath ("// etichetă [începe-cu (@ id, 'mesaj')]")));// Imprimați textul elementului căutatSystem.out.println (w.getText ());// Închideți browseruldriver.quit ();}}

Axele Xpath

Folosind axele XPath, puteți găsi elementele dinamice și foarte complexe pe o pagină web. Axele XPath conțin mai multe metode pentru a găsi un element. Aici, vom discuta câteva metode.

următoarele : Această funcție va returna elementul imediat al componentei particulare.

Aici interogarea noastră XPath va fi ca.

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

XPath folosind următoarele

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;public class În urma {public static main main (String [] args) {Driver WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");driver = nou ChromeDriver ();// Lansați aplicațiadriver.get ("https://www.guru99.com/");// Căutați elementul utilizând metoda Următorulw = driver.findElement (By.xpath ("// * [@ type = 'text'] // following :: input"));// Imprimați textul elementului căutatSystem.out.println (w.getText ());// Închideți browseruldriver.quit ();}}

Precedent: Această funcție va returna elementul precedent al elementului particular.

Aici interogarea noastră XPath va fi ca.

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

XPath folosind precedent

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;public class Precedent {public static main main (String [] args) {Driver WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");driver = nou ChromeDriver ();// Lansați aplicațiadriver.get ("https://www.guru99.com/");// Căutați elementul utilizând metoda precedentăw = driver.findElement (By.xpath ("// * [@ type = 'submit'] // precedent :: input"));// Imprimați elementul căutatSystem.out.println (w.getText ());// Închideți browseruldriver.quit ();}}

d) Descendent: Această funcție va returna elementul descendent al elementului particular.

Aici interogarea noastră XPath va fi ca.

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

XPath folosind Descendant

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;public class Descendant {public static main main (String [] args) {Driver WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");driver = nou ChromeDriver ();// Lansați aplicațiadriver.get ("https://www.guru99.com/");// Căutați elementul utilizând metoda descendentăw = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // descendent :: a"));// Imprimați elementul căutatSystem.out.println (w.getText ());// Închideți browseruldriver.quit ();}}

rezumat

  • Există unele situații în care XPath regulat nu poate fi folosit pentru a găsi un element. Într-o astfel de situație, avem nevoie de funcții diferite de interogarea xpath.
  • Există câteva funcții importante XPath, cum ar fi XPath, părinte, strămoși, următori-frați etc.
  • Cu ajutorul acestor funcții, puteți crea expresii XPath complexe.