Το XPath περιέχει, ακολουθώντας αμφιθαλείς, προγόνους & Σελήνιο AND / OR

Πίνακας περιεχομένων:

Anonim

Εάν ένα απλό XPath δεν μπορεί να βρει ένα περίπλοκο στοιχείο ιστού για το σενάριο δοκιμής μας, πρέπει να χρησιμοποιήσουμε τις λειτουργίες από τη βιβλιοθήκη XPath 1.0. Με το συνδυασμό αυτών των λειτουργιών, μπορούμε να δημιουργήσουμε πιο συγκεκριμένο XPath. Ας συζητήσουμε για 3 τέτοιες λειτουργίες -

  1. Περιέχει
  2. Αμφιθαλής αδελφός
  3. Πρόγονος
  4. Και Ή
  5. Μητρική εταιρεία
  6. Ξεκινάει με
  7. XPath Άξονες

Ας τα μελετήσουμε λεπτομερώς -

Τι περιέχει () στο Σελήνιο;

περιέχει () στο Selenium είναι μια συνάρτηση εντός της έκφρασης Xpath η οποία χρησιμοποιείται για την αναζήτηση στοιχείων ιστού που περιέχουν ένα συγκεκριμένο κείμενο. Μπορούμε να εξαγάγουμε όλα τα στοιχεία που ταιριάζουν με τη δεδομένη τιμή κειμένου χρησιμοποιώντας τη λειτουργία XPath περιέχει () σε ολόκληρη την ιστοσελίδα. Περιέχει στο XPath τη δυνατότητα εύρεσης του στοιχείου με μερικό κείμενο.

Πρώην. Εδώ ψάχνουμε μια άγκυρα. Περιέχει κείμενο ως «SAP M».

"// h4 / a [περιέχει [κείμενο (), 'SAP M')]"

ΣΗΜΕΙΩΣΗ: Μπορείτε να εξασκηθείτε στην ακόλουθη άσκηση XPath σε αυτό το http://demo.guru99.com/test/selenium-xpath.html

Τι είναι το Sibling στο Selenium Webdriver;

Η αδελφή στο Selenium Webdriver είναι μια συνάρτηση που χρησιμοποιείται για τη λήψη ενός στοιχείου ιστού που είναι αδελφός στο γονικό στοιχείο. Εάν το γονικό στοιχείο είναι γνωστό, τότε το στοιχείο ιστού μπορεί εύκολα να βρεθεί ή να εντοπιστεί που μπορεί να χρησιμοποιήσει το χαρακτηριστικό αδελφού της έκφρασης Xpath στο πρόγραμμα οδήγησης ιστού σεληνίου.

Αδελφός στο XPath Παράδειγμα: Εδώ με βάση το στοιχείο αδελφού του «a» βρίσκουμε το «h4»

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

Προγόνου : Για να βρούμε ένα στοιχείο βάσει του γονικού στοιχείου μπορούμε να χρησιμοποιήσουμε το γνώρισμα προγόνου του XPath.

Ας κατανοήσουμε αυτές τις 3 λειτουργίες χρησιμοποιώντας ένα παράδειγμα -

Βήματα δοκιμής

Σημείωση: Από την ημερομηνία δημιουργίας του σεμιναρίου, η αρχική σελίδα του Guru99 έχει ενημερωθεί, οπότε χρησιμοποιήστε τον ιστότοπο επίδειξης αντί να εκτελέσετε δοκιμές

  1. Μεταβείτε στη διεύθυνση http://demo.guru99.com/test/guru99home/
  2. Στην ενότητα "Μερικά από τα πιο δημοφιλή μαθήματά μας", αναζητήστε όλα τα Στοιχεία Ιστού που είναι αδέλφια ενός WebElement του οποίου το κείμενο είναι "SELENIUM"
  3. Θα βρούμε στοιχείο χρησιμοποιώντας το κείμενο XPath περιέχει, πρόγονος και αδελφή.

ΧΡΗΣΗ Περιέχει και XPath Sibling

εισαγωγή java.util.List;εισαγωγή java.util.concurrent.TimeUnit;εισαγωγή org.openqa.selenium.By;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.WebElement;εισαγωγή org.openqa.selenium.firefox.FirefoxDriver;εισαγωγή org.testng.annotations.Test;δημόσια τάξη SiblingAndParentInXpath {@Δοκιμήpublic void testSiblingAndParentInXpath () {Πρόγραμμα οδήγησης WebDriver;String driverPath = "C: \\ geckodriver.exe";System.setProperty ("webdriver.gecko.driver", driverPath);πρόγραμμα οδήγησης = νέο FirefoxDriver ();driver.manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Στοιχείο αναζήτησης μέσα στο «Δημοφιλές μάθημα» που είναι αδέλφια ελέγχου «SELENIUM», Εδώ πρώτα θα βρούμε ένα h2 του οποίου το κείμενο είναι «Μερικά από τα πιο δημοφιλή μαθήματά μας», μετά μεταβαίνουμε στο γονικό του στοιχείο που είναι « div ', μέσα σε αυτό το div θα βρούμε έναν σύνδεσμο του οποίου το κείμενο είναι' SELENIUM 'και επιτέλους θα βρούμε όλα τα αδέλφια αυτού του συνδέσμου (' SELENIUM ')Λίστα  dateBox = driver.findElements (By.xpath ("// h2 [περιέχει [κείμενο ()," Μερικά από τα πιο δημοφιλή μαθήματα ")] / γονέας :: div // div [// a [κείμενο () = 'SELENIUM']] / following-sibling :: div [@ class = 'rt-grid-2 rt-omega'] "));// Εκτυπώστε όλα τα αδέλφια του στοιχείου που ονομάζεται «SELENIUM» στο «Δημοφιλές μάθημα»για (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}driver.close ();}}

Η παραγωγή θα είναι όπως:

Πρόγονος στο Selenium Webdriver

Το Ancestor στο Selenium Webdriver είναι μια συνάρτηση που χρησιμοποιείται για την εύρεση του προγόνου ενός συγκεκριμένου μέλους στο καθορισμένο επίπεδο. Το επίπεδο του προγόνου που θα επιστραφεί ή το επίπεδο του προγόνου σε σχέση με το επίπεδο του μέλους μπορεί να προσδιοριστεί ρητά. Επιστρέφει τον αριθμό των ιεραρχικών βημάτων από τον πρόγονο, εντοπίζοντας τον καθορισμένο πρόγονο που θέλει ο χρήστης.

Ας υποθέσουμε ότι πρέπει να αναζητήσουμε όλα τα στοιχεία στην ενότητα «Δημοφιλές μάθημα» με τη βοήθεια του προγόνου της άγκυρας του οποίου το κείμενο είναι «SELENIUM»

Εδώ θα είναι το ερώτημά μας xpath

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

Πλήρης κωδικός

εισαγωγή java.util.List;εισαγωγή java.util.concurrent.TimeUnit;εισαγωγή org.openqa.selenium.By;εισαγωγή org.openqa.selenium.Keys;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.WebElement;εισαγωγή org.openqa.selenium.firefox.FirefoxDriver;εισαγωγή org.testng.annotations.Test;δημόσια τάξη AncestorInXpath {@Δοκιμήpublic void testAncestorInXpath () {Πρόγραμμα οδήγησης WebDriver = νέο FirefoxDriver ();driver.manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/guru99home/");// Αναζήτηση όλων των στοιχείων στην ενότητα «Δημοφιλές μάθημα»// με τη βοήθεια του προγόνου της άγκυρας του οποίου το κείμενο είναι «SELENIUM»Λίστα  dateBox = driver.findElements (By.xpath ("// div [.// a [text () = 'SELENIUM']] / πρόγονος :: div [@ class = 'rt-grid-2 rt- omega '] / following-sibling :: div "));// Εκτυπώστε όλα τα αδέλφια του στοιχείου που ονομάζεται «SELENIUM» στο «Δημοφιλές μάθημα»για (WebElement webElement: dateBox) {System.out.println (webElement.getText ());}driver.quit ();}}

Η έξοδος θα μοιάζει με-

Χρήση AND και OR

Χρησιμοποιώντας AND και OR μπορείτε να βάλετε 2 συνθήκες στην έκφραση XPath μας.

  • Στην περίπτωση AND και οι δύο συνθήκες πρέπει να είναι αληθινές τότε μόνο θα βρει το στοιχείο.
  • Σε περίπτωση OR ή οποιαδήποτε από τις 2 συνθήκες πρέπει να ισχύει, τότε μόνο βρίσκει το στοιχείο.

Εδώ θα είναι το ερώτημα XPath

Xpath = // * [@ type = 'submit' OR @ name = 'btnReset']
Xpath = // input [@ type = 'submit' και @ name = 'btnLogin']

Βήματα δοκιμής:

  1. Μεταβείτε στη διεύθυνση http://demo.guru99.com/v1/
  2. Στην ενότητα, θα χρησιμοποιηθεί ο παραπάνω ιστότοπος επίδειξης για αναζήτηση στοιχείου με διαφορετικές λειτουργίες του XPath.

Θα βρείτε ένα στοιχείο χρησιμοποιώντας άξονες AND και OR, γονικό, αρχικό με και XPath

ΚΑΙ Ή παράδειγμα

εισαγωγή org.openqa.selenium.By;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.WebElement;εισαγωγή org.openqa.selenium.chrome.ChromeDriver;δημόσια τάξη AND_OR {Δημόσιο στατικό κενό (String [] args) {Πρόγραμμα οδήγησης WebDriver;WebElement w, x;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");πρόγραμμα οδήγησης = νέο ChromeDriver ();// Εκκινήστε την εφαρμογήdriver.get ("https://www.guru99.com/");// Στοιχείο αναζήτησης χρησιμοποιώντας το OR στο xpathw = driver.findElement (By.xpath ("// * [@ type = 'submit' OR @ name = 'btnReset']"));// Εκτυπώστε το κείμενο του στοιχείουSystem.out.println (w.getText ());// Στοιχείο αναζήτησης χρησιμοποιώντας AND στο xpathx = driver.findElement (By.xpath ("// input [@ type = 'submit' and @ name = 'btnLogin']"));// Εκτυπώστε το κείμενο του στοιχείου αναζήτησηςSystem.out.println (x.getText ());// Κλείστε το πρόγραμμα περιήγησηςdriver.quit ();}}

Τι είναι ο Γονέας στο Σελήνιο;

Ο γονέας στο Σελήνιο είναι μια μέθοδος που χρησιμοποιείται για την ανάκτηση του γονικού κόμβου του τρέχοντος κόμβου που έχει επιλεγεί στην ιστοσελίδα. Είναι πολύ χρήσιμο στην περίπτωση που επιλέγετε ένα στοιχείο και πρέπει να αποκτήσετε το γονικό στοιχείο χρησιμοποιώντας το Xpath. Αυτή η μέθοδος χρησιμοποιείται επίσης για να πάρει τον γονέα του γονέα.

Εδώ θα είναι το ερώτημα XPath

Xpath = // * [@ id = 'rt-feature'] // γονέας :: div

XPath χρησιμοποιώντας το γονέα

εισαγωγή org.openqa.selenium.By;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.WebElement;εισαγωγή org.openqa.selenium.chrome.ChromeDriver;Δημόσιος τάξη Γονέας {Δημόσιο στατικό κενό (String [] args) {Πρόγραμμα οδήγησης WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");πρόγραμμα οδήγησης = νέο ChromeDriver ();// Εκκινήστε την εφαρμογήdriver.get ("https://www.guru99.com/");// Αναζήτηση στο στοιχείο χρησιμοποιώντας το PARENTw = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // γονέας :: div"));// Εκτυπώστε το κείμενο του στοιχείου αναζήτησηςSystem.out.println (w.getText ());// Κλείστε το πρόγραμμα περιήγησηςdriver.quit ();}}

Ξεκινάει με

Χρησιμοποιώντας τη λειτουργία Starts-with, μπορείτε να βρείτε το στοιχείο του οποίου το χαρακτηριστικό αλλάζει δυναμικά κατά την ανανέωση ή άλλες λειτουργίες όπως κλικ, υποβολή κ.λπ.

Εδώ θα είναι το ερώτημα XPath

Xpath = // label [ξεκινά με (@ id, 'message')]

εισαγωγή org.openqa.selenium.By;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.WebElement;εισαγωγή org.openqa.selenium.chrome.ChromeDriver;δημόσια τάξη StartsWith {Δημόσιο στατικό κενό (String [] args) {Πρόγραμμα οδήγησης WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");πρόγραμμα οδήγησης = νέο ChromeDriver ();// Εκκινήστε την εφαρμογήdriver.get ("https://www.guru99.com/");// Αναζητήστε το στοιχείο χρησιμοποιώντας το start-withw = driver.findElement (By.xpath ("// label [ξεκινά με (@ id, 'message')]"));// Εκτυπώστε το κείμενο του στοιχείου αναζήτησηςSystem.out.println (w.getText ());// Κλείστε το πρόγραμμα περιήγησηςdriver.quit ();}}

Άξονες Xpath

Χρησιμοποιώντας τους άξονες XPath, μπορείτε να βρείτε τα δυναμικά και πολύ περίπλοκα στοιχεία σε μια ιστοσελίδα. Οι άξονες XPath περιέχουν διάφορες μεθόδους για την εύρεση ενός στοιχείου. Εδώ, θα συζητήσουμε μερικές μεθόδους.

ακόλουθη : Αυτή η συνάρτηση θα επιστρέψει το άμεσο στοιχείο του συγκεκριμένου στοιχείου.

Εδώ θα είναι το ερώτημα XPath

Xpath = // * [@ type = 'text'] // ακόλουθο :: εισαγωγή

Το XPath χρησιμοποιεί το ακόλουθο

εισαγωγή org.openqa.selenium.By;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.WebElement;εισαγωγή org.openqa.selenium.chrome.ChromeDriver;δημόσια τάξη Παρακολούθηση {Δημόσιο στατικό κενό (String [] args) {Πρόγραμμα οδήγησης WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");πρόγραμμα οδήγησης = νέο ChromeDriver ();// Εκκινήστε την εφαρμογήdriver.get ("https://www.guru99.com/");// Αναζήτηση στο στοιχείο χρησιμοποιώντας την ακόλουθη μέθοδοw = driver.findElement (By.xpath ("// * [@ type = 'text'] // ακόλουθο :: input"));// Εκτυπώστε το κείμενο του στοιχείου αναζήτησηςSystem.out.println (w.getText ());// Κλείστε το πρόγραμμα περιήγησηςdriver.quit ();}}

Προηγούμενο: Αυτή η συνάρτηση θα επιστρέψει το προηγούμενο στοιχείο του συγκεκριμένου στοιχείου.

Εδώ θα είναι το ερώτημα XPath

Xpath = // * [@ type = 'submit'] // προηγούμενο :: εισαγωγή

XPath χρησιμοποιώντας το Preceding

εισαγωγή org.openqa.selenium.By;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.WebElement;εισαγωγή org.openqa.selenium.chrome.ChromeDriver;δημόσια τάξη Προηγούμενη {Δημόσιο στατικό κενό (String [] args) {Πρόγραμμα οδήγησης WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");πρόγραμμα οδήγησης = νέο ChromeDriver ();// Εκκινήστε την εφαρμογήdriver.get ("https://www.guru99.com/");// Αναζήτηση στο στοιχείο χρησιμοποιώντας την προηγούμενη μέθοδοw = driver.findElement (By.xpath ("// * [@ type = 'submit'] // προηγούμενο :: input"));// Εκτυπώστε το στοιχείο αναζήτησηςSystem.out.println (w.getText ());// Κλείστε το πρόγραμμα περιήγησηςdriver.quit ();}}

δ) Απόγονος: Αυτή η συνάρτηση θα επιστρέψει το στοιχείο απογόνου του συγκεκριμένου στοιχείου.

Εδώ θα είναι το ερώτημα XPath

Xpath = // * [@ id = 'rt-feature'] // απόγονος :: a

XPath χρησιμοποιώντας Descendant

εισαγωγή org.openqa.selenium.By;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.WebElement;εισαγωγή org.openqa.selenium.chrome.ChromeDriver;δημόσια τάξη απογόνων {Δημόσιο στατικό κενό (String [] args) {Πρόγραμμα οδήγησης WebDriver;WebElement w;System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");πρόγραμμα οδήγησης = νέο ChromeDriver ();// Εκκινήστε την εφαρμογήdriver.get ("https://www.guru99.com/");// Αναζήτηση στο στοιχείο χρησιμοποιώντας τη μέθοδο απογόνουw = driver.findElement (By.xpath ("// * [@ id = 'rt-feature'] // απόγονος :: a"));// Εκτυπώστε το στοιχείο αναζήτησηςSystem.out.println (w.getText ());// Κλείστε το πρόγραμμα περιήγησηςdriver.quit ();}}

Περίληψη

  • Υπάρχουν ορισμένες περιπτώσεις όπου το κανονικό XPath δεν μπορεί να χρησιμοποιηθεί για την εύρεση ενός στοιχείου. Σε μια τέτοια κατάσταση, χρειαζόμαστε διαφορετικές λειτουργίες από το ερώτημα xpath.
  • Υπάρχουν ορισμένες σημαντικές λειτουργίες XPath όπως το XPath, γονέας, πρόγονος, αδελφός, κλπ
  • Με τη βοήθεια αυτών των λειτουργιών, μπορείτε να δημιουργήσετε σύνθετες εκφράσεις XPath.