XPath innehåller, efter syskon, Ancestor & Selen OCH / ELLER

Innehållsförteckning:

Anonim

Om en enkel XPath inte kan hitta ett komplicerat webbelement för vårt testskript måste vi använda funktionerna från XPath 1.0-biblioteket. Med kombinationen av dessa funktioner kan vi skapa mer specifik XPath. Låt oss diskutera 3 sådana funktioner -

  1. Innehåller
  2. Syskon
  3. Förfader
  4. Och ELLER
  5. Förälder
  6. Börjar med
  7. XPath-axlar

Låt oss studera dem i detalj -

Vad innehåller () i selen?

innehåller () i Selen är en funktion inom Xpath-uttryck som används för att söka efter webbelement som innehåller en viss text. Vi kan extrahera alla element som matchar det givna textvärdet med XPath innehåller () -funktionen på hela webbsidan. Innehåller i XPath har förmågan att hitta elementet med delvis text.

Ex. Här söker vi ett ankare. Innehåller text som 'SAP M'.

"// h4 / a [innehåller (text (), 'SAP M')]"

OBS! Du kan öva följande XPath-övning på denna http://demo.guru99.com/test/selenium-xpath.html

Vad är syskon i Selen Webdriver?

Ett syskon i Selen Webdriver är en funktion som används för att hämta ett webbelement som är ett syskon till det överordnade elementet. Om det överordnade elementet är känt kan webbelementet enkelt hittas eller lokaliseras som kan använda syskonattributet för Xpath-uttrycket i selen webdriver.

Syskon i XPath Exempel: Här på grundval av syskonelement av 'a' hittar vi 'h4'

"// div [@ class = 'canvas-graph'] // a [@href = '/ accounting.html'] [i [@ class = 'icon-usd']] / följande syskon :: h4"

Ancestor : För att hitta ett element på grundval av det överordnade elementet kan vi använda förfaderattributet XPath.

Låt oss förstå dessa 3 funktioner med hjälp av ett exempel -

Teststeg

Obs: Sedan skapandet av självstudien har Guru99 hemsida uppdaterats så använd demosidan istället för att köra tester

  1. Gå till http://demo.guru99.com/test/guru99home/
  2. I avsnittet "Några av våra mest populära kurser", sök i alla webbelement som är syskon till ett WebElement vars text är "SELENIUM"
  3. Vi hittar element med XPath-text innehåller, förfader och syskonfunktion.

ANVÄNDNING Innehåller och XPath syskon

importera java.util.List;importera java.util.concurrent.TimeUnit;importera org.openqa.selenium.By;importera org.openqa.selenium.WebDriver;importera org.openqa.selenium.WebElement;importera org.openqa.selenium.firefox.FirefoxDriver;importera org.testng.annotations.Test;public class SiblingAndParentInXpath {@Testapublic void testSiblingAndParentInXpath () {WebDriver-drivrutin;Sträng driverPath = "C: \\ geckodriver.exe";System.setProperty ("webdriver.gecko.driver", driverPath);drivrutin = ny FirefoxDriver ();driver.manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Sökelement inuti 'Populär kurs' som är syskon till kontroll 'SELENIUM', Här kommer vi först att hitta en h2 vars text är '' Några av våra mest populära kurser ', sedan går vi till dess överordnade element som är ett div ', inuti denna div hittar vi en länk vars text är' SELENIUM 'så kommer vi äntligen hitta alla syskonelementen i denna länk (' SELENIUM ')Lista  dateBox = driver.findElements (By.xpath ("// h2 [innehåller (text (), 'Några av våra mest populära kurser')] / förälder :: div // div [// a [text () = 'SELENIUM']] / följande syskon :: div [@ class = 'rt-grid-2 rt-omega'] "));// Skriv ut alla som är syskon till det element som heter 'SELENIUM' i 'Populär kurs'för (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}driver.close ();}}

Output kommer att vara som:

Förfader i Selen Webdriver

Ancestor in Selenium Webdriver är en funktion som används för att hitta förfadern till en viss medlem vid det angivna lagret. Nivån på den förfader som ska returneras eller nivån på förfäderna i förhållande till nivån på medlemmen kan uttryckligen anges. Den returnerar antalet hierarkiska steg från förfädern och lokaliserar den angivna förfader som användaren vill ha.

Antag nu att vi måste söka efter alla element i avsnittet "Populär kurs" med hjälp av ankaren till ankaret vars text är "SELENIUM"

Här kommer vår xpath-fråga att vara som

"//div [.//a [text()='SELENIUM']] / anestor :: div [@class='rt-grid-2 rt-omega '] / följande syskon :: div"

Komplett kod

importera java.util.List;importera java.util.concurrent.TimeUnit;importera org.openqa.selenium.By;importera org.openqa.selenium.Keys;importera org.openqa.selenium.WebDriver;importera org.openqa.selenium.WebElement;importera org.openqa.selenium.firefox.FirefoxDriver;importera org.testng.annotations.Test;offentlig klass AncestorInXpath {@Testapublic void testAncestorInXpath () {WebDriver-drivrutin = ny FirefoxDriver ();driver.manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Sök alla element i avsnittet "Populär kurs"// med hjälp av ankarens förfader vars text är 'SELENIUM'Lista  dateBox = driver.findElements (By.xpath ("// div [.// a [text () = 'SELENIUM']] / förfader :: div [@ class = 'rt-grid-2 rt- omega '] / följande syskon :: div "));// Skriv ut alla som är syskon till det element som heter 'SELENIUM' i 'Populär kurs'för (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}driver.quit ();}}

Output kommer att se ut-

Använda AND och OR

Genom att använda AND och ELLER kan du sätta två villkor i vårt XPath-uttryck.

  • I fallet med OCH bör båda de två villkoren vara sanna, då hittar den bara elementet.
  • I fallet med ELLER något av de två villkoren ska vara sant så hittar det bara elementet.

Här kommer vår XPath-fråga att vara som

Xpath = // * [@ type = 'skicka' ELLER @ namn = 'btnReset']
Xpath = // input [@ type = 'submit' och @ name = 'btnLogin']

Teststeg:

  1. Gå till http://demo.guru99.com/v1/
  2. I avsnittet, kommer att använda ovanstående demo webbplats för att söka element med olika funktioner i XPath.

Du hittar ett element som använder AND- och ELLER, överordnad, börjar med och XPath-axlar

OCH ELLER Exempel

importera org.openqa.selenium.By;importera org.openqa.selenium.WebDriver;importera org.openqa.selenium.WebElement;importera org.openqa.selenium.chrome.ChromeDriver;offentlig klass AND_OR {public static void main (String [] args) {WebDriver-drivrutin;WebElement w, x;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");drivrutin = ny ChromeDriver ();// Starta applikationendriver.get ("https://www.guru99.com/");// Sökelement med OR i xpathw = driver.findElement (By.xpath ("// * [@ type = 'submit' ELLER @ name = 'btnReset']"));// Skriv ut elementets textSystem.out.println (w.getText ());// Sökelement med AND i xpathx = driver.findElement (By.xpath ("// input [@ type = 'submit' och @ name = 'btnLogin']"));// Skriv ut texten på det sökta elementetSystem.out.println (x.getText ());// Stäng webbläsarendriver.quit ();}}

Vad är förälder i selen?

Parent in Selenium är en metod som används för att hämta föräldernoden för den aktuella noden som valts på webbsidan. Det är mycket användbart i situationen när du väljer ett element och behöver hämta det överordnade elementet med Xpath. Denna metod används också för att få föräldrarnas förälder.

Här kommer vår XPath-fråga att vara som

Xpath = // * [@ id = 'rt-funktion'] // förälder :: div

XPath med förälder

importera org.openqa.selenium.By;importera org.openqa.selenium.WebDriver;importera org.openqa.selenium.WebElement;importera org.openqa.selenium.chrome.ChromeDriver;offentlig klass Förälder {public static void main (String [] args) {WebDriver-drivrutin;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");drivrutin = ny ChromeDriver ();// Starta applikationendriver.get ("https://www.guru99.com/");// Sök i elementet med PARENTw = driver.findElement (By.xpath ("// * [@ id = 'rt-funktion'] // förälder :: div"));// Skriv ut texten på det sökta elementetSystem.out.println (w.getText ());// Stäng webbläsarendriver.quit ();}}

Börjar med

Med Starts-with-funktionen kan du hitta det element vars attribut dynamiskt ändras vid uppdatering eller andra åtgärder som klicka, skicka etc.

Här kommer vår XPath-fråga att vara som

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

importera org.openqa.selenium.By;importera org.openqa.selenium.WebDriver;importera org.openqa.selenium.WebElement;importera org.openqa.selenium.chrome.ChromeDriver;public class StartsWith {public static void main (String [] args) {WebDriver-drivrutin;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");drivrutin = ny ChromeDriver ();// Starta applikationendriver.get ("https://www.guru99.com/");// Sök i elementet med start-medw = driver.findElement (By.xpath ("// label [starts-with (@ id, 'message')]"));// Skriv ut texten på det sökta elementetSystem.out.println (w.getText ());// Stäng webbläsarendriver.quit ();}}

Xpath-axlar

Genom att använda XPath-axlar kan du hitta de dynamiska och mycket komplexa elementen på en webbsida. XPath-axlar innehåller flera metoder för att hitta ett element. Här kommer vi att diskutera några metoder.

följande : Den här funktionen returnerar det omedelbara elementet för den specifika komponenten.

Här kommer vår XPath-fråga att vara som

Xpath = // * [@ type = 'text'] // följande :: input

XPath med följande

importera org.openqa.selenium.By;importera org.openqa.selenium.WebDriver;importera org.openqa.selenium.WebElement;importera org.openqa.selenium.chrome.ChromeDriver;offentlig klass Efter {public static void main (String [] args) {WebDriver-drivrutin;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");drivrutin = ny ChromeDriver ();// Starta applikationendriver.get ("https://www.guru99.com/");// Sök i elementet med följande metodw = driver.findElement (By.xpath ("// * [@ type = 'text'] // följande :: input"));// Skriv ut texten på det sökta elementetSystem.out.println (w.getText ());// Stäng webbläsarendriver.quit ();}}

Föregående: Denna funktion returnerar det föregående elementet för det specifika elementet.

Här kommer vår XPath-fråga att vara som

Xpath = // * [@ type = 'submit'] // föregående :: input

XPath med hjälp av föregående

importera org.openqa.selenium.By;importera org.openqa.selenium.WebDriver;importera org.openqa.selenium.WebElement;importera org.openqa.selenium.chrome.ChromeDriver;offentlig klass före {public static void main (String [] args) {WebDriver-drivrutin;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");drivrutin = ny ChromeDriver ();// Starta applikationendriver.get ("https://www.guru99.com/");// Sök i elementet med föregående metodw = driver.findElement (By.xpath ("// * [@ type = 'submit'] // föregående :: input"));// Skriv ut det sökta elementetSystem.out.println (w.getText ());// Stäng webbläsarendriver.quit ();}}

d) Efterkommande: Den här funktionen returnerar efterkommande element för det specifika elementet.

Här kommer vår XPath-fråga att vara som

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

XPath med Descendant

importera org.openqa.selenium.By;importera org.openqa.selenium.WebDriver;importera org.openqa.selenium.WebElement;importera org.openqa.selenium.chrome.ChromeDriver;offentlig klass ättling {public static void main (String [] args) {WebDriver-drivrutin;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");drivrutin = ny ChromeDriver ();// Starta applikationendriver.get ("https://www.guru99.com/");// Sök i elementet med hjälp av descendant-metodenw = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // descendant :: a"));// Skriv ut det sökta elementetSystem.out.println (w.getText ());// Stäng webbläsarendriver.quit ();}}

Sammanfattning

  • Det finns vissa situationer då vanlig XPath inte kan användas för att hitta ett element. I en sådan situation behöver vi olika funktioner från xpath-frågan.
  • Det finns några viktiga XPath-funktioner som XPath innehåller, förälder, förfäder, eftersyskon etc.
  • Med hjälp av dessa funktioner kan du skapa komplexa XPath-uttryck.