Στην αυτοματοποίηση Selenium, εάν τα στοιχεία δεν εντοπίζονται από τους γενικούς εντοπιστές όπως id, class, name κ.λπ. τότε το XPath χρησιμοποιείται για την εύρεση ενός στοιχείου στην ιστοσελίδα.
Σε αυτό το σεμινάριο, θα μάθουμε για το xpath και τη διαφορετική έκφραση XPath για να βρούμε τα σύνθετα ή δυναμικά στοιχεία, των οποίων τα χαρακτηριστικά αλλάζουν δυναμικά κατά την ανανέωση ή οποιεσδήποτε λειτουργίες.
Σε αυτό το σεμινάριο XPath, θα μάθετε-
- Τι είναι το XPath;
- Τύποι X-path
- Απόλυτο XPath
- Σχετική XPath
- Βασικό XPath
- Περιέχει ()
- Χρήση OR & AND
- Ξεκινά με τη λειτουργία
- Κείμενο()
- Μέθοδοι αξόνων XPath
- ΕΠΟΜΕΝΟ
- Πρόγονος
- Παιδί
- Προηγούμενος
- Παρακολούθηση-αδελφός
- Μητρική εταιρεία
- Εαυτός
- Απόγονος
Τι είναι το XPath στο Σελήνιο;
Το XPath στο Σελήνιο είναι μια διαδρομή XML που χρησιμοποιείται για πλοήγηση στη δομή HTML της σελίδας. Είναι μια σύνταξη ή γλώσσα για την εύρεση οποιουδήποτε στοιχείου σε μια ιστοσελίδα χρησιμοποιώντας την έκφραση διαδρομής XML. Το XPath μπορεί να χρησιμοποιηθεί τόσο για έγγραφα HTML όσο και για έγγραφα XML για την εύρεση της θέσης οποιουδήποτε στοιχείου σε μια ιστοσελίδα χρησιμοποιώντας τη δομή HTML DOM.
Η βασική μορφή του XPath στο σελήνιο εξηγείται παρακάτω με λήψη οθόνης.
Βασική μορφή XPath
Σύνταξη για σελήνιο XPath:
Το XPath περιέχει τη διαδρομή του στοιχείου που βρίσκεται στην ιστοσελίδα. Η τυπική σύνταξη XPath για τη δημιουργία XPath είναι.
Xpath = // tagname [@ attribute = 'value']
- //: Επιλέξτε τον τρέχοντα κόμβο.
- Tagname: Tagname του συγκεκριμένου κόμβου.
- @: Επιλέξτε χαρακτηριστικό.
- Χαρακτηριστικό: Όνομα χαρακτηριστικού του κόμβου.
- Τιμή: Τιμή του χαρακτηριστικού.
Για να βρείτε το στοιχείο στις ιστοσελίδες με ακρίβεια υπάρχουν διαφορετικοί τύποι εντοπιστών:
Εντοπιστές XPath | Βρείτε διαφορετικά στοιχεία στην ιστοσελίδα |
ταυτότητα | Για να βρείτε το στοιχείο με αναγνωριστικό του στοιχείου |
Ονομα τάξης | Για να βρείτε το στοιχείο με Όνομα κλάσης του στοιχείου |
Ονομα | Για να βρείτε το στοιχείο με το όνομα του στοιχείου |
Κείμενο συνδέσμου | Για να βρείτε το στοιχείο ανά κείμενο του συνδέσμου |
XPath | Απαιτείται XPath για την εύρεση του δυναμικού στοιχείου και διασχίζει διάφορα στοιχεία της ιστοσελίδας |
Διαδρομή CSS | Η διαδρομή CSS εντοπίζει επίσης στοιχεία που δεν έχουν όνομα, κλάση ή αναγνωριστικό. |
Τύποι X-path
Υπάρχουν δύο τύποι XPath:
1) Απόλυτο XPath
2) Σχετικό XPath
Απόλυτο XPath:
Είναι ο άμεσος τρόπος για να βρείτε το στοιχείο, αλλά το μειονέκτημα του απόλυτου XPath είναι ότι εάν υπάρχουν αλλαγές στη διαδρομή του στοιχείου, τότε το XPath αποτυγχάνει.
Το βασικό χαρακτηριστικό του XPath είναι ότι ξεκινά με τη μεμονωμένη κάθετη (/), πράγμα που σημαίνει ότι μπορείτε να επιλέξετε το στοιχείο από τον ριζικό κόμβο.
Παρακάτω είναι το παράδειγμα μιας απόλυτης έκφρασης xpath του στοιχείου που εμφανίζεται στην παρακάτω οθόνη.
ΣΗΜΕΙΩΣΗ: Μπορείτε να εξασκηθείτε στην ακόλουθη άσκηση XPath σε αυτό το http://demo.guru99.com/test/selenium-xpath.html
Κάντε κλικ εδώ εάν το βίντεο δεν είναι προσβάσιμο
Απόλυτο XPath:
/ html / body / div [2] / div [1] / div / h4 [1] / b / html [1] / body [1] / div [2] / div [1] / div [1] / h4 [1] / β [1]
Απόλυτο XPath
Σχετικό Xpath:
Το σχετικό Xpath ξεκινά από τη μέση της δομής HTML DOM. Ξεκινά με διπλή κάθετο (//). Μπορεί να αναζητήσει στοιχεία οπουδήποτε στην ιστοσελίδα, δεν χρειάζεται να γράψετε ένα μεγάλο xpath και μπορείτε να ξεκινήσετε από τη μέση της δομής HTML DOM. Το Relative Xpath προτιμάται πάντα, καθώς δεν είναι μια ολοκληρωμένη διαδρομή από το ριζικό στοιχείο.
Παρακάτω είναι το παράδειγμα μιας σχετικής έκφρασης XPath του ίδιου στοιχείου που φαίνεται στην παρακάτω οθόνη. Αυτή είναι η κοινή μορφή που χρησιμοποιείται για την εύρεση στοιχείου από το XPath.
Κάντε κλικ εδώ εάν το βίντεο δεν είναι προσβάσιμο
Σχετική XPath: // div [@ class = 'Featured-box cloumnsize1'] // h4 [1] // b [1]
Σχετική XPath
Τι είναι οι άξονες XPath.
Οι άξονες XPath αναζητούν διαφορετικούς κόμβους σε έγγραφο XML από τον τρέχοντα κόμβο περιβάλλοντος. Οι άξονες XPath είναι οι μέθοδοι που χρησιμοποιούνται για την εύρεση δυναμικών στοιχείων, τα οποία διαφορετικά δεν είναι δυνατά με την κανονική μέθοδο XPath χωρίς αναγνωριστικό, όνομα κλάσης, όνομα κ.λπ.
Χρησιμοποιούνται μέθοδοι άξονες για την εύρεση αυτών των στοιχείων, τα οποία αλλάζουν δυναμικά κατά την ανανέωση ή οποιαδήποτε άλλη λειτουργία. Υπάρχουν λίγες μέθοδοι αξόνων που χρησιμοποιούνται συνήθως στο Selenium Webdriver όπως παιδί, γονέας, πρόγονος, αδελφός, προηγούμενος, εαυτός κ.λπ.
Χρησιμοποιώντας XPath Handling complex & Dynamic στοιχεία στο Selenium
1) Βασικό XPath:
Η έκφραση XPath επιλέγει κόμβους ή λίστα κόμβων με βάση χαρακτηριστικά όπως ID, Όνομα, Όνομα κλάσης κ.λπ. από το έγγραφο XML όπως φαίνεται παρακάτω.
Xpath = // είσοδος [@ name = 'uid']
Ακολουθεί ένας σύνδεσμος για πρόσβαση στη σελίδα http://demo.guru99.com/test/selenium-xpath.html
Βασικό XPath
Μερικές πιο βασικές εκφράσεις xpath:
Xpath = // είσοδος [@ type = 'text']Xpath = // ετικέτα [@ id = 'message23']Xpath = // είσοδος [@ value = 'RESET']Xpath = // * [@ class = 'barone']Xpath = // a [@ href = 'http: //demo.guru99.com/']Xpath = //img[@src='//cdn.guru99.com/images/home/java.png.webp ']
2) Περιέχει ():
Περιέχει () είναι μια μέθοδος που χρησιμοποιείται στην έκφραση XPath. Χρησιμοποιείται όταν η τιμή οποιουδήποτε χαρακτηριστικού αλλάζει δυναμικά, για παράδειγμα, πληροφορίες σύνδεσης.
Η δυνατότητα περιέχει έχει τη δυνατότητα εύρεσης του στοιχείου με μερικό κείμενο, όπως φαίνεται στο παρακάτω παράδειγμα XPath.
Σε αυτό το παράδειγμα, προσπαθήσαμε να προσδιορίσουμε το στοιχείο χρησιμοποιώντας απλώς μερική τιμή κειμένου του χαρακτηριστικού. Στην παρακάτω έκφραση XPath η μερική τιμή «sub» χρησιμοποιείται στη θέση του κουμπιού υποβολής. Μπορεί να παρατηρηθεί ότι το στοιχείο βρέθηκε με επιτυχία.
Η πλήρης τιμή του «Τύπου» είναι «υποβολή» αλλά χρησιμοποιώντας μόνο μερική τιμή «υπο».
Xpath = // * [περιέχει (@ type, 'sub')]
Η πλήρης τιμή του 'ονόματος' είναι 'btnLogin' αλλά χρησιμοποιώντας μόνο μερική τιμή 'btn'.
Xpath = // * [περιέχει (@ όνομα, 'btn')]
Στην παραπάνω έκφραση, έχουμε πάρει το "όνομα" ως χαρακτηριστικό και το "btn" ως μερική τιμή όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης. Αυτό θα βρει 2 στοιχεία (LOGIN & RESET) καθώς το χαρακτηριστικό «name» ξεκινά με το «btn».
Ομοίως, στην παρακάτω έκφραση, έχουμε λάβει το "id" ως χαρακτηριστικό και το "μήνυμα" ως μερική τιμή. Αυτό θα βρει 2 στοιχεία («Το User-ID δεν πρέπει να είναι κενό» & «Ο κωδικός πρόσβασης δεν πρέπει να είναι κενό») καθώς το χαρακτηριστικό «name» ξεκινά με «μήνυμα».
Xpath = // * [περιέχει (@ id, 'message')]
Στην παρακάτω έκφραση, έχουμε λάβει το "κείμενο" του συνδέσμου ως χαρακτηριστικό και "εδώ" ως μερική τιμή όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης. Αυτό θα βρει τον σύνδεσμο («εδώ») καθώς εμφανίζει το κείμενο «εδώ».
Xpath = // * [περιέχει [κείμενο (), «εδώ»)]Xpath = // * [περιέχει (@ href, 'guru99.com')]
3) Χρήση OR & AND:
Στην έκφραση OR, χρησιμοποιούνται δύο συνθήκες, είτε η 1η συνθήκη Ή η 2η συνθήκη πρέπει να είναι αληθινές. Ισχύει επίσης εάν ισχύει μία από τις προϋποθέσεις ή ίσως και τα δύο. Σημαίνει οποιαδήποτε προϋπόθεση πρέπει να ισχύει για την εύρεση του στοιχείου.
Στην παρακάτω έκφραση XPath, προσδιορίζει τα στοιχεία των οποίων η ενιαία ή και οι δύο συνθήκες είναι αληθινές.
Xpath = // * [@ type = 'submit' ή @ name = 'btnReset']
Επισημάνετε και τα δύο στοιχεία ως στοιχείο "LOGIN" που έχει το χαρακτηριστικό "type" και το στοιχείο "RESET" με το χαρακτηριστικό "name".
Στην έκφραση AND, χρησιμοποιούνται δύο συνθήκες, και οι δύο συνθήκες πρέπει να ισχύουν για την εύρεση του στοιχείου. Αποτυγχάνει να βρει στοιχείο εάν κάποια από τις συνθήκες είναι ψευδής.
Xpath = // input [@ type = 'submit' και @ name = 'btnLogin']
Στην παρακάτω έκφραση, επισημαίνετε το στοιχείο "LOGIN" καθώς έχει και το χαρακτηριστικό "type" και "name".
4) Το Xpath ξεκινά με
Το XPath ξεκινά με () είναι μια συνάρτηση που χρησιμοποιείται για την εύρεση του στοιχείου ιστού του οποίου η τιμή χαρακτηριστικού αλλάζει κατά την ανανέωση ή από άλλες δυναμικές λειτουργίες στην ιστοσελίδα. Σε αυτήν τη μέθοδο, το αρχικό κείμενο του χαρακτηριστικού ταιριάζει για να βρείτε το στοιχείο του οποίου η τιμή του χαρακτηριστικού αλλάζει δυναμικά. Μπορείτε επίσης να βρείτε στοιχεία των οποίων η τιμή χαρακτηριστικού είναι στατική (όχι αλλαγές).
Για παράδειγμα -: Ας υποθέσουμε ότι το αναγνωριστικό συγκεκριμένου στοιχείου αλλάζει δυναμικά όπως:
Αναγνωριστικό = "message12"
Αναγνωριστικό = "message345"
Αναγνωριστικό = "message8769"
και ούτω καθεξής ... αλλά το αρχικό κείμενο είναι το ίδιο. Σε αυτήν την περίπτωση, χρησιμοποιούμε την έκφραση Start-with.
Στην παρακάτω έκφραση, υπάρχουν δύο στοιχεία με ένα αναγνωριστικό που ξεκινά το "μήνυμα" (δηλαδή, "User-ID δεν πρέπει να είναι κενό" & "Ο κωδικός πρόσβασης δεν πρέπει να είναι κενό"). Στο παρακάτω παράδειγμα, το XPath βρίσκει εκείνο το στοιχείο του οποίου το «ID» ξεκινά με το «μήνυμα».
Xpath = // label [ξεκινά με (@ id, 'message')]
5) Λειτουργία κειμένου XPath ()
Η συνάρτηση XPath text () είναι μια ενσωματωμένη συνάρτηση του σεληνίου webdriver που χρησιμοποιείται για τον εντοπισμό στοιχείων βάσει κειμένου ενός στοιχείου ιστού. Βοηθά στην εύρεση των ακριβών στοιχείων κειμένου και εντοπίζει τα στοιχεία μέσα στο σύνολο των κόμβων κειμένου. Τα στοιχεία που θα πρέπει να βρίσκονται σε μορφή συμβολοσειράς.
Σε αυτήν την έκφραση, με τη λειτουργία κειμένου, βρίσκουμε το στοιχείο με την ακριβή αντιστοίχιση κειμένου όπως φαίνεται παρακάτω. Στην περίπτωσή μας, βρίσκουμε το στοιχείο με κείμενο "UserID".
Xpath = // td [text () = 'UserID']
6) Μέθοδοι αξόνων XPath:
Αυτές οι μέθοδοι αξόνων XPath χρησιμοποιούνται για την εύρεση των σύνθετων ή δυναμικών στοιχείων. Παρακάτω θα δούμε μερικές από αυτές τις μεθόδους.
Για την απεικόνιση αυτής της μεθόδου αξόνων XPath, θα χρησιμοποιήσουμε τον ιστότοπο επίδειξης του Guru99 bank.
α) Ακολουθεί:
Επιλέγει όλα τα στοιχεία στο έγγραφο του τρέχοντος κόμβου () [Το πλαίσιο εισαγωγής UserID είναι ο τρέχων κόμβος] όπως φαίνεται στην παρακάτω οθόνη.
Xpath = // * [@ type = 'text'] // ακόλουθο :: εισαγωγή
Υπάρχουν 3 κόμβοι "εισαγωγής" που ταιριάζουν χρησιμοποιώντας το κουμπί "ακολουθώντας" άξονα - κωδικό πρόσβασης, σύνδεσης και επαναφοράς. Εάν θέλετε να εστιάσετε σε οποιοδήποτε συγκεκριμένο στοιχείο, μπορείτε να χρησιμοποιήσετε την παρακάτω μέθοδο XPath:
Xpath = // * [@ type = 'text'] // ακόλουθο :: input [1]
Μπορείτε να αλλάξετε το XPath σύμφωνα με την απαίτηση βάζοντας [1], [2]
… και ούτω καθεξής.Με την είσοδο ως «1», το παρακάτω στιγμιότυπο οθόνης βρίσκει τον συγκεκριμένο κόμβο που είναι το στοιχείο πλαισίου εισαγωγής «Κωδικός πρόσβασης».
β) Προγονός:
Ο άξονας των προγόνων επιλέγει όλα τα στοιχεία των προγόνων (παππούδες, γονέας κ.λπ.) του τρέχοντος κόμβου, όπως φαίνεται στην παρακάτω οθόνη.
Στην παρακάτω έκφραση, βρίσκουμε το στοιχείο των προγόνων του τρέχοντος κόμβου (κόμβος "ENTERPRISE TESTING").
Xpath = // * [text () = 'Enterprise Testing'] // πρόγονος :: div
Υπάρχουν 13 "div" κόμβοι που ταιριάζουν χρησιμοποιώντας τον "πρόγονο" άξονα. Αν θέλετε να εστιάσετε σε οποιοδήποτε συγκεκριμένο στοιχείο, τότε μπορείτε να χρησιμοποιήσετε το παρακάτω XPath, όπου αλλάζετε τον αριθμό 1, 2 σύμφωνα με την απαίτησή σας:
Xpath = // * [text () = 'Enterprise Testing'] // πρόγονος :: div [1]
Μπορείτε να αλλάξετε το XPath σύμφωνα με την απαίτηση βάζοντας [1], [2]
… και ούτω καθεξής.γ) Παιδί:
Επιλέγει όλα τα θυγατρικά στοιχεία του τρέχοντος κόμβου (Java), όπως φαίνεται στην παρακάτω οθόνη.
Xpath = // * [@ id = 'java_technologies'] // παιδί :: li
Υπάρχουν 71 "li" κόμβοι που ταιριάζουν χρησιμοποιώντας τον "θυγατρικό" άξονα. Εάν θέλετε να εστιάσετε σε οποιοδήποτε συγκεκριμένο στοιχείο, τότε μπορείτε να χρησιμοποιήσετε το παρακάτω xpath:
Xpath = // * [@ id = 'java_technologies'] // παιδί :: li [1]
Μπορείτε να αλλάξετε το xpath σύμφωνα με την απαίτηση βάζοντας [1], [2]
… και ούτω καθεξής.δ) Προηγούμενο:
Επιλέξτε όλους τους κόμβους που προηγούνται του τρέχοντος κόμβου, όπως φαίνεται στην παρακάτω οθόνη.
Στην παρακάτω έκφραση, προσδιορίζει όλα τα στοιχεία εισαγωγής πριν από το κουμπί "LOGIN" που είναι στοιχείο εισόδου Userid και κωδικού πρόσβασης .
Xpath = // * [@ type = 'submit'] // προηγούμενο :: εισαγωγή
Υπάρχουν 2 κόμβοι "εισόδου" που ταιριάζουν χρησιμοποιώντας τον "προηγούμενο" άξονα. Εάν θέλετε να εστιάσετε σε οποιοδήποτε συγκεκριμένο στοιχείο, τότε μπορείτε να χρησιμοποιήσετε το παρακάτω XPath:
Xpath = // * [@ type = 'submit'] // προηγούμενο :: είσοδος [1]
Μπορείτε να αλλάξετε το xpath σύμφωνα με την απαίτηση βάζοντας [1], [2]
… και ούτω καθεξής.ε) Παρακολούθηση-αδελφός:
Επιλέξτε τα ακόλουθα αδέλφια του κόμβου περιβάλλοντος. Τα αδέλφια βρίσκονται στο ίδιο επίπεδο του τρέχοντος κόμβου όπως φαίνεται στην παρακάτω οθόνη. Θα βρει το στοιχείο μετά τον τρέχοντα κόμβο.
xpath = // * [@ type = 'submit'] // following-sibling :: εισαγωγή
Ένας κόμβος εισόδου ταιριάζει χρησιμοποιώντας τον άξονα "following-saudara".
στ) Γονέας:
Επιλέγει τον γονέα του τρέχοντος κόμβου όπως φαίνεται στην παρακάτω οθόνη.
Xpath = // * [@ id = 'rt-feature'] // γονέας :: div
Υπάρχουν 65 "div" κόμβοι που ταιριάζουν χρησιμοποιώντας τον "γονικό" άξονα. Εάν θέλετε να εστιάσετε σε οποιοδήποτε συγκεκριμένο στοιχείο, τότε μπορείτε να χρησιμοποιήσετε το παρακάτω XPath:
Xpath = // * [@ id = 'rt-feature'] // γονέας :: div [1]
Μπορείτε να αλλάξετε το XPath σύμφωνα με την απαίτηση βάζοντας [1], [2]
… και ούτω καθεξής.ζ) Μόνος:
Επιλέγει τον τρέχοντα κόμβο ή «εαυτό» σημαίνει ότι δείχνει τον ίδιο τον κόμβο όπως φαίνεται στην παρακάτω οθόνη.
Ένας κόμβος που ταιριάζει χρησιμοποιώντας τον "εαυτό" άξονα. Βρίσκεται πάντα μόνο ένας κόμβος, καθώς αντιπροσωπεύει αυτό-στοιχείο.
Xpath = // * [@ type = 'password'] // self :: input
η) Απόγονος:
Επιλέγει τους απογόνους του τρέχοντος κόμβου, όπως φαίνεται στην παρακάτω οθόνη.Στην παρακάτω έκφραση, προσδιορίζει όλα τα στοιχεία απόγονοι στο τρέχον στοιχείο (στοιχείο πλαισίου «Κύριο σώμα σώματος») που σημαίνει κάτω από τον κόμβο (θυγατρικός κόμβος, κόμβος εγγονιού κ.λπ.).
Xpath = // * [@ id = 'rt-feature'] // απόγονος :: a
Υπάρχουν 12 "σύνδεσμοι" κόμβοι που ταιριάζουν χρησιμοποιώντας τον άξονα "απόγονος". Εάν θέλετε να εστιάσετε σε οποιοδήποτε συγκεκριμένο στοιχείο, τότε μπορείτε να χρησιμοποιήσετε το παρακάτω XPath:
Xpath = // * [@ id = 'rt-feature'] // απόγονος :: a [1]
Μπορείτε να αλλάξετε το XPath σύμφωνα με την απαίτηση βάζοντας [1], [2]
… και ούτω καθεξής.Περίληψη:
Το XPath απαιτείται για την εύρεση ενός στοιχείου στην ιστοσελίδα για να κάνει μια λειτουργία σε αυτό το συγκεκριμένο στοιχείο.
- Υπάρχουν δύο τύποι σεληνίου XPath:
- Απόλυτο XPath
- Σχετική XPath
- Οι άξονες XPath είναι οι μέθοδοι που χρησιμοποιούνται για την εύρεση δυναμικών στοιχείων, τα οποία διαφορετικά δεν είναι δυνατόν να βρεθούν με κανονική μέθοδο XPath
- Η έκφραση XPath επιλέγει κόμβους ή λίστα κόμβων με βάση χαρακτηριστικά όπως ID, Όνομα, Όνομα κλάσης κ.λπ. από το έγγραφο XML.