XPath indeholder følgende søskende, forfader og amp; Selen OG / ELLER

Indholdsfortegnelse:

Anonim

Hvis en simpel XPath ikke er i stand til at finde et kompliceret webelement til vores test script, skal vi bruge funktionerne fra XPath 1.0 biblioteket. Med kombinationen af ​​disse funktioner kan vi oprette mere specifik XPath. Lad os diskutere en 3 sådanne funktioner -

  1. Indeholder
  2. Søskende
  3. Forfader
  4. Og ELLER
  5. Forælder
  6. Starter med
  7. XPath-akser

Lad os studere dem detaljeret -

Hvad indeholder () i selen?

indeholder () i Selen er en funktion inden for Xpath-udtryk, der bruges til at søge efter de webelementer, der indeholder en bestemt tekst. Vi kan udtrække alle de elementer, der matcher den givne tekstværdi ved hjælp af XPath indeholder () -funktionen på hele websiden. Indeholder i XPath har evnen til at finde elementet med delvis tekst.

Eks. Her søger vi et anker. Indeholder tekst som 'SAP M'.

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

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

Hvad er søskende i Selen Webdriver?

Et søskende i Selen Webdriver er en funktion, der bruges til at hente et webelement, der er et søskende til det overordnede element. Hvis det overordnede element er kendt, kan webelementet let findes eller lokaliseres, der kan bruge søskendeattributten til Xpath-udtrykket i selen webdriver.

Søskende i XPath Eksempel: Her på basis af søskendeelement af 'a' finder vi 'h4'

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

Forfader : For at finde et element på basis af det overordnede element kan vi bruge forfaderattributten XPath.

Lad os forstå disse 3 funktioner ved hjælp af et eksempel -

Test trin

Bemærk: Siden datoen for oprettelsen af ​​tutorial er hjemmesiden for Guru99 blevet opdateret, så brug demo-stedet i stedet for at køre tests

  1. Gå til http://demo.guru99.com/test/guru99home/
  2. I afsnittet 'Et par af vores mest populære kurser' skal du søge i alle webelementer, der er søskende til et WebElement, hvis tekst er 'SELENIUM'
  3. Vi finder element ved hjælp af XPath-tekst indeholder, forfader og søskende funktion.

BRUG Indeholder og XPath søskende

importere java.util.List;import java.util.concurrent.TimeUnit;importer 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;offentlig klasse SiblingAndParentInXpath {@Prøvepublic void testSiblingAndParentInXpath () {WebDriver driver;Streng driverPath = "C: \\ geckodriver.exe";System.setProperty ("webdriver.gecko.driver", driverPath);driver = ny FirefoxDriver ();driver.manage (). timeouts (). implicitWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Søgeelement inden i 'Populært kursus', der er søskende til kontrol 'SELENIUM', Her finder vi først en h2, hvis tekst er '' Et par af vores mest populære kurser ', så flytter vi til dets overordnede element, som er div ', inden i denne div finder vi et link, hvis tekst er' SELENIUM ', så finder vi endelig alle søskendeelementerne i dette link (' SELENIUM ')Liste  dateBox = driver.findElements (By.xpath ("// h2 [indeholder (tekst (), 'Et par af vores mest populære kurser')] / forælder :: div // div [// a [tekst () = 'SELENIUM']] / følgende søskende :: div [@ class = 'rt-grid-2 rt-omega'] "));// Udskriv alle de søskende til det element, der hedder 'SELENIUM' i 'Populær kursus'for (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}driver.close ();}}

Output vil være som:

Forfader i Selen Webdriver

Forfader i Selen Webdriver er en funktion, der bruges til at finde forfædren til et specifikt medlem ved det angivne lag. Niveauet af forfader, der skal returneres eller niveauet for forfædren i forhold til niveauet for medlemmet, kan udtrykkeligt specificeres. Det returnerer antallet af hierarkiske trin fra forfædren og lokaliserer den angivne forfader, som brugeren ønsker.

Antag nu, at vi har brug for at søge i alle elementer i afsnittet 'Populær kursus' ved hjælp af forfader til ankeret, hvis tekst er 'SELENIUM'

Her vil vores xpath-forespørgsel være som

"//div [.//a [tekst()='SELENIUM']] / anestor :: div [@class='rt-grid-2 rt-omega '] / følgende søskende :: div

Komplet kode

importere java.util.List;import java.util.concurrent.TimeUnit;importer 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;offentlig klasse AncestorInXpath {@Prøveoffentlig ugyldig testAncestorInXpath () {WebDriver-driver = ny FirefoxDriver ();driver.manage (). timeouts (). implicitWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Søg i alle elementer i afsnittet 'Populært kursus'// ved hjælp af forfader 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ølgende søskende :: div "));// Udskriv alle de søskende til det element, der hedder 'SELENIUM' i 'Populært kursus'for (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}driver.quit ();}}

Output vil se ud som-

Brug af AND og OR

Ved at bruge AND og OR kan du sætte 2 betingelser i vores XPath-udtryk.

  • I tilfælde af OG skal begge to betingelser være sande, så finder det kun elementet.
  • I tilfælde af ELLER en af ​​de to betingelser skal være sande, finder det kun elementet.

Her vil vores XPath-forespørgsel være som

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

Test trin:

  1. Gå til http://demo.guru99.com/v1/
  2. I afsnittet bruger ovenstående demo-side til at søge element med forskellige funktioner i XPath.

Du finder et element ved hjælp af AND og OR, forælder, starter-med og XPath akser

OG ELLER Eksempel

importer org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;offentlig klasse AND_OR {public static void main (String [] args) {WebDriver driver;WebElement w, x;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");driver = ny ChromeDriver ();// Start applikationendriver.get ("https://www.guru99.com/");// Søgeelement ved hjælp af OR i xpathw = driver.findElement (By.xpath ("// * [@ type = 'send' ELLER @ navn = 'btnReset']"));// Udskriv elementets tekstSystem.out.println (w.getText ());// Søgeelement ved hjælp af AND i xpathx = driver.findElement (By.xpath ("// input [@ type = 'send' og @ name = 'btnLogin']"));// Udskriv teksten til det søgte elementSystem.out.println (x.getText ());// Luk browserendriver.quit ();}}

Hvad er forælder i selen?

Forælder i selen er en metode, der bruges til at hente den overordnede node for den aktuelle node, der er valgt på websiden. Det er meget nyttigt i situationen, når du vælger et element og har brug for at hente det overordnede element ved hjælp af Xpath. Denne metode bruges også til at få forældrenes forælder.

Her vil vores XPath-forespørgsel være som

Xpath = // * [@ id = 'rt-funktion'] // forælder :: div

XPath ved hjælp af forælder

importer org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;offentlig klasse Forælder {public static void main (String [] args) {WebDriver driver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");driver = ny ChromeDriver ();// Start applikationendriver.get ("https://www.guru99.com/");// Søg i elementet ved hjælp af PARENTw = driver.findElement (By.xpath ("// * [@ id = 'rt-funktion'] // forælder :: div"));// Udskriv teksten til det søgte elementSystem.out.println (w.getText ());// Luk browserendriver.quit ();}}

Starter med

Ved hjælp af Starts-with-funktionen kan du finde det element, hvis attribut dynamisk ændres ved opdatering eller andre handlinger som klik, send osv.

Her vil vores XPath-forespørgsel være som

Xpath = // label [starter-med (@ id, 'besked')]

importer org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;offentlig klasse StartsWith {public static void main (String [] args) {WebDriver driver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");driver = ny ChromeDriver ();// Start applikationendriver.get ("https://www.guru99.com/");// Søg i elementet ved hjælp af start-medw = driver.findElement (By.xpath ("// label [starter-med (@ id, 'besked')]"));// Udskriv teksten til det søgte elementSystem.out.println (w.getText ());// Luk browserendriver.quit ();}}

Xpath-akser

Ved at bruge XPath-akser kan du finde de dynamiske og meget komplekse elementer på en webside. XPath-akser indeholder flere metoder til at finde et element. Her diskuteres et par metoder.

følgende : Denne funktion returnerer det øjeblikkelige element i den bestemte komponent.

Her vil vores XPath-forespørgsel være som

Xpath = // * [@ type = 'text'] // følgende :: input

XPath ved hjælp af følgende

importer org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;offentlig klasse Efter {public static void main (String [] args) {WebDriver driver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");driver = ny ChromeDriver ();// Start applikationendriver.get ("https://www.guru99.com/");// Søg i elementet ved hjælp af Følgende metodew = driver.findElement (By.xpath ("// * [@ type = 'text'] // følgende :: input"));// Udskriv teksten til det søgte elementSystem.out.println (w.getText ());// Luk browserendriver.quit ();}}

Forudgående: Denne funktion returnerer det foregående element for det bestemte element.

Her vil vores XPath-forespørgsel være som

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

XPath ved hjælp af foregående

importer org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;offentlig klasse forud for {public static void main (String [] args) {WebDriver driver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");driver = ny ChromeDriver ();// Start applikationendriver.get ("https://www.guru99.com/");// Søg i elementet ved hjælp af den foregående metodew = driver.findElement (By.xpath ("// * [@ type = 'send'] // foregående :: input"));// Udskriv det søgte elementSystem.out.println (w.getText ());// Luk browserendriver.quit ();}}

d) Efterkommer: Denne funktion returnerer det efterfølgende element for det bestemte element.

Her vil vores XPath-forespørgsel være som

Xpath = // * [@ id = 'rt-funktion'] // efterkommer :: a

XPath ved hjælp af Descendant

importer org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;offentlig klasse Efterkommer {public static void main (String [] args) {WebDriver driver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");driver = ny ChromeDriver ();// Start applikationendriver.get ("https://www.guru99.com/");// Søg i elementet ved hjælp af afstamningsmetodenw = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // efterkommer :: a"));// Udskriv det søgte elementSystem.out.println (w.getText ());// Luk browserendriver.quit ();}}

Resumé

  • Der er nogle situationer, hvor almindelig XPath ikke kan bruges til at finde et element. I en sådan situation har vi brug for forskellige funktioner fra xpath-forespørgslen.
  • Der er nogle vigtige XPath-funktioner som XPath indeholder, forældre, forfædre, efter-søskende osv.
  • Ved hjælp af disse funktioner kan du oprette komplekse XPath-udtryk.