Ja vienkāršs XPath nespēj atrast sarežģītu tīmekļa elementu mūsu testa skriptam, mums jāizmanto XPath 1.0 bibliotēkas funkcijas. Izmantojot šo funkciju kombināciju, mēs varam izveidot precīzāku XPath. Apspriedīsim 3 šādas funkcijas -
- Satur
- Brālis
- Sencis
- Un VAI
- Vecāks
- Sākas ar
- XPath asis
Izpētīsim tos detalizēti -
Kas satur () selēnā?
selenium satur () ir funkcija Xpath izteiksmē, ko izmanto, lai meklētu tīmekļa elementus, kas satur noteiktu tekstu. Mēs varam iegūt visus elementus, kas atbilst norādītajai teksta vērtībai, izmantojot tīmekļa vietnē funkciju XPath satur (). Satur XPath satur iespēju atrast elementu ar daļēju tekstu.
Piem. Šeit mēs meklējam enkuru. Satur tekstu kā “SAP M”.
"// h4 / a [satur (text (), 'SAP M')]]"
PIEZĪME. Šajā vietnē http://demo.guru99.com/test/selenium-xpath.html varat praktizēt šo XPath vingrinājumu.
Kas ir māsas selēna tīmekļa draiverī?
Radniecīga in Selenium Webdriver ir funkcija izmantots, lai iegūtu web elementu, kas ir sibling mātes elementu. Ja vecāku elements ir zināms, tad tīmekļa elementu var viegli atrast vai atrast, kas selēna tīmekļa draiverī var izmantot Xpath izteiksmes brāļa atribūtu.
Brālis / māsa XPath piemērā: Šeit, pamatojoties uz brāļa un māsas elementu a, mēs atrodam h4
"// div [@ class = 'audekls-grafiks'] // a [@href = '/ grāmatvedība.html'] [i [@ class = 'icon-usd']] / sekojošais-brālis :: h4"
Sencis : Lai atrastu elementu, pamatojoties uz vecāku elementu, mēs varam izmantot XPath priekšteča atribūtu.
Ļauj saprast šīs 3 funkcijas, izmantojot piemēru -
Pārbaudes soļi
Piezīme: Kopš apmācības izveides datuma Guru99 mājas lapa ir atjaunināta, tāpēc testu veikšanai izmantojiet demonstrācijas vietni
- Dodieties uz vietni http://demo.guru99.com/test/guru99home/
- Sadaļā “Daži no mūsu populārākajiem kursiem” meklējiet visus tīmekļa elementus, kas ir WebElement brāļi un māsas, kuru teksts ir “SELENIUM”
- Mēs atradīsim elementu, izmantojot XPath teksta satur, priekšteča un brāļa / māsas funkciju.
LIETOŠANA Satur un XPath Sibling
importēt java.util.List;importēt java.util.concurrent.TimeUnit;importēt org.openqa.selenium.By;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.WebElement;importēt org.openqa.selenium.firefox.FirefoxDriver;importēt org.testng.annotations.Test;sabiedrības klase SiblingAndParentInXpath {@Pārbaudepublic void testSiblingAndParentInXpath () {WebDriver draiveris;String driverPath = "C: \\ geckodriver.exe";System.setProperty ("webdriver.gecko.driver", driverPath);draiveris = jauns FirefoxDriver ();draiveris.manage (). taimauts (). implicitlyWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Meklēšanas elements iekš “Populārs kurss”, kas ir vadības “SELENIUM” brālis. Šeit vispirms atradīsim h2, kura teksts ir “Daži no mūsu populārākajiem kursiem”, pēc tam pārejam uz tā pamatelementu, kas ir “ div ', šī div iekšpusē mēs atradīsim saiti, kuras teksts ir' SELENIUM ', tad beidzot mēs atradīsim visus šīs saites brāļus un māsas elementus (' SELENIUM ')SarakstādateBox = driver.findElements (By.xpath ("// h2 [satur (text (), 'Daži no mūsu populārākajiem kursiem')] / parent :: div // div [// a [text () = 'SELENIUM']] / sekojošais brālis :: div [@ class = 'rt-grid-2 rt-omega'] "));// Izdrukājiet visus elementa “SELENIUM” nosaukumus sadaļā “Populārie kursi”domēnam (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}vadītājs.slēgt ();}}
Rezultāts būs šāds:
Sencis selēna tīmekļa draiverī
Selenium Webdriver sencis ir funkcija, ko izmanto, lai atrastu konkrēta dalībnieka senci norādītajā slānī. Var precīzi norādīt atdodamā priekšteča līmeni vai priekšteča līmeni attiecībā pret dalībnieka līmeni. Tas atgriež senča hierarhisko darbību skaitu, atrodot norādīto priekšteci, kuru lietotājs vēlas.
Tagad pieņemsim, ka mums ir jāmeklē visi elementi sadaļā “Populārs kurss” ar enkura priekšteča palīdzību, kura teksts ir “SELENIUM”
Šeit mūsu xpath vaicājums būs līdzīgs
"//div[.//a[text()='SELENIUM']]/ancestor::div[@class='rt-grid-2 rt-omega '] / sekojošais-brālis :: div"
Pilnīgs kods
importēt java.util.List;importēt java.util.concurrent.TimeUnit;importēt org.openqa.selenium.By;importēt org.openqa.selenium.Keys;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.WebElement;importēt org.openqa.selenium.firefox.FirefoxDriver;importēt org.testng.annotations.Test;sabiedrības klase AncestorInXpath {@Pārbaudepublic void testAncestorInXpath () {WebDriver draiveris = jauns FirefoxDriver ();draiveris.manage (). taimauts (). implicitlyWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Meklēt visus elementus sadaļā “Populārs kurss”// ar enkura priekšteča palīdzību, kura teksts ir 'SELENIUM'SarakstādateBox = driver.findElements (By.xpath ("// div [.// a [text () = 'SELENIUM']] / sencis: div [@ class = 'rt-grid-2 rt- omega '] / sekojošais brālis :: div "));// Izdrukājiet visus elementa, kas nosaukts par 'SELENIUM', sadaļu 'Populārs kurss'.domēnam (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}vadītājs.iziet ();}}
Rezultāts izskatīsies
Izmantojot AND un OR
Izmantojot AND un OR, jūs varat ievietot 2 nosacījumus mūsu XPath izteiksmē.
- AND gadījumā abiem diviem nosacījumiem jābūt patiesiem, tad tikai tas atrod elementu.
- VAI gadījumā kādam no diviem nosacījumiem jābūt patiesiem, tad tikai tas atrod elementu.
Šeit mūsu XPath vaicājums būs līdzīgs
Xpath = // * [@ type = 'submit' OR @ name = 'btnReset']
Xpath = // ievade [@ type = 'submit' un @ name = 'btnLogin']
Pārbaudes darbības:
- Atveriet vietni http://demo.guru99.com/v1/
- Sadaļā tiks izmantota iepriekšminētā demonstrācijas vietne, lai meklētu elementu ar dažādām XPath funkcijām.
Jūs atradīsit elementu, izmantojot asis AND un OR, vecāks, sākuma un XPath asis
UN VAI Piemērs
importēt org.openqa.selenium.By;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.WebElement;importēt org.openqa.selenium.chrome.ChromeDriver;publiskā klase AND_OR {public static void main (String [] args) {WebDriver draiveris;WebElement w, x;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");draiveris = jauns ChromeDriver ();// Palaidiet lietojumprogrammudriver.get ("https://www.guru99.com/");// Meklēšanas elements, izmantojot xpath, izmantojot ORw = driver.findElement (By.xpath ("// * [@ type = 'submit' OR @ name = 'btnReset']"));// Izdrukājiet elementa tekstuSystem.out.println (w.getText ());// Meklēšanas elements, izmantojot xpath, izmantojot ANDx = driver.findElement (By.xpath ("// ievade [@ type = 'Iesniegt' un @ name = 'btnLogin']"));// Izdrukājiet meklētā elementa tekstuSystem.out.println (x.getText ());// Aizveriet pārlūkuvadītājs.iziet ();}}
Kas ir vecāks selēns?
Parent in Selenium ir metode, ko izmanto, lai ielādētu pašreizējā mezgla vecāku mezglu, kas atlasīts tīmekļa lapā. Tas ir ļoti noderīgi situācijā, kad atlasāt elementu un nepieciešams iegūt vecāku elementu, izmantojot Xpath. Šo metodi izmanto arī, lai iegūtu vecāku vecākus.
Šeit mūsu XPath vaicājums būs līdzīgs
Xpath = // * [@ id = 'rt-feature'] // vecāks :: div
XPath, izmantojot vecāku
importēt org.openqa.selenium.By;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.WebElement;importēt org.openqa.selenium.chrome.ChromeDriver;publiskā klase Vecāks {public static void main (String [] args) {WebDriver draiveris;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");draiveris = jauns ChromeDriver ();// Palaidiet lietojumprogrammudriver.get ("https://www.guru99.com/");// Meklējiet elementu, izmantojot PARENTw = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // parent :: div"));// Izdrukājiet meklētā elementa tekstuSystem.out.println (w.getText ());// Aizveriet pārlūkuvadītājs.iziet ();}}
Sākas ar
Izmantojot funkciju Sākt ar, jūs varat atrast elementu, kura atribūts dinamiski mainās atsvaidzināšanas vai citu darbību laikā, piemēram, noklikšķiniet, iesniedziet utt.
Šeit mūsu XPath vaicājums būs līdzīgs
Xpath = // iezīme [sākas ar (@ id, 'ziņojums')]
importēt org.openqa.selenium.By;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.WebElement;importēt org.openqa.selenium.chrome.ChromeDriver;publiskā klase StartsWith {public static void main (String [] args) {WebDriver draiveris;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");draiveris = jauns ChromeDriver ();// Palaidiet lietojumprogrammudriver.get ("https://www.guru99.com/");// Meklējiet elementu, izmantojot sākuma sākumuw = driver.findElement (By.xpath ("// iezīme [sākas ar (@ id, 'ziņojums')]"));// Izdrukājiet meklētā elementa tekstuSystem.out.println (w.getText ());// Aizveriet pārlūkuvadītājs.iziet ();}}
Xpath asis
Izmantojot XPath asis, tīmekļa lapā varat atrast dinamiskos un ļoti sarežģītos elementus. XPath asīs ir vairākas metodes elementa atrašanai. Šeit apspriedīs dažas metodes.
šādi : Šī funkcija atgriezīs konkrētā komponenta tiešo elementu.
Šeit mūsu XPath vaicājums būs līdzīgs
Xpath = // * [@ type = 'text'] // seko :: ievadei
XPath, izmantojot sekojošo
importēt org.openqa.selenium.By;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.WebElement;importēt org.openqa.selenium.chrome.ChromeDriver;publiskā klase seko {public static void main (String [] args) {WebDriver draiveris;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");draiveris = jauns ChromeDriver ();// Palaidiet lietojumprogrammudriver.get ("https://www.guru99.com/");// Meklējiet elementu, izmantojot metodi Followw = driver.findElement (By.xpath ("// * [@ type = 'text'] // sekojošais :: ievade"));// Izdrukājiet meklētā elementa tekstuSystem.out.println (w.getText ());// Aizveriet pārlūkuvadītājs.iziet ();}}
Iepriekšējais: šī funkcija atgriezīs konkrētā elementa iepriekšējo elementu.
Šeit mūsu XPath vaicājums būs līdzīgs
Xpath = // * [@ type = 'submit'] // pirms :: input
XPath, izmantojot iepriekšējo
importēt org.openqa.selenium.By;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.WebElement;importēt org.openqa.selenium.chrome.ChromeDriver;sabiedrības klase pirms {public static void main (String [] args) {WebDriver draiveris;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");draiveris = jauns ChromeDriver ();// Palaidiet lietojumprogrammudriver.get ("https://www.guru99.com/");// Meklēt elementā, izmantojot iepriekšējo metodiw = driver.findElement (By.xpath ("// * [@ type = 'submit'] // iepriekšējais :: input"));// Izdrukājiet meklēto elementuSystem.out.println (w.getText ());// Aizveriet pārlūkuvadītājs.iziet ();}}
d) Pēcnācējs: šī funkcija atgriezīs konkrētā elementa pēcnācēju elementu.
Šeit mūsu XPath vaicājums būs līdzīgs
Xpath = // * [@ id = 'rt-feature'] // pēcnācējs :: a
XPath, izmantojot Descendant
importēt org.openqa.selenium.By;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.WebElement;importēt org.openqa.selenium.chrome.ChromeDriver;sabiedrības klases pēcnācējs {public static void main (String [] args) {WebDriver draiveris;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");draiveris = jauns ChromeDriver ();// Palaidiet lietojumprogrammudriver.get ("https://www.guru99.com/");// Meklēt elementu, izmantojot pēcnācēju metodiw = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // pēcnācējs :: a"));// Izdrukājiet meklēto elementuSystem.out.println (w.getText ());// Aizveriet pārlūkuvadītājs.iziet ();}}
Kopsavilkums
- Ir dažas situācijas, kad parasto XPath nevar izmantot elementa atrašanai. Šādā situācijā mums ir nepieciešamas dažādas funkcijas no vaicājuma xpath.
- Tur dažas svarīgas XPath funkcijas, piemēram, XPath satur, vecāks, senči, sekojošais brālis utt.
- Ar šo funkciju palīdzību jūs varat izveidot sarežģītas XPath izteiksmes.