xpath axes dynamic xpath selenium webdriver
Αυτό το σεμινάριο εξηγεί τους άξονες XPath για δυναμικά XPath στο Selenium WebDriver Με τη βοήθεια διαφόρων αξόνων XPath που χρησιμοποιούνται, παραδείγματα και επεξήγηση της δομής:
Στο προηγούμενο σεμινάριο, μάθαμε για τις λειτουργίες XPath και τη σημασία του στην αναγνώριση του στοιχείου. Ωστόσο, όταν περισσότερα από ένα στοιχεία έχουν πολύ παρόμοιο προσανατολισμό και ονοματολογία, καθίσταται αδύνατο να προσδιοριστεί το στοιχείο μοναδικά.
=> Ανατρέξτε στον τέλειο οδηγό εκπαίδευσης σεληνίου εδώ.
Τι θα μάθετε:
Κατανόηση των αξόνων XPath
Ας κατανοήσουμε το παραπάνω σενάριο με τη βοήθεια ενός παραδείγματος.
Σκεφτείτε ένα σενάριο όπου χρησιμοποιούνται δύο σύνδεσμοι με κείμενο 'Επεξεργασία'. Σε τέτοιες περιπτώσεις, καθίσταται σκόπιμο να κατανοήσουμε την κομβική δομή του HTML.
Αντιγράψτε και επικολλήστε τον παρακάτω κώδικα στο σημειωματάριο και αποθηκεύστε τον ως αρχείο .htm.
Edit Edit
Το περιβάλλον χρήστη θα μοιάζει με την παρακάτω οθόνη:
Δήλωση προβλήματος
Ε # 1) Τι πρέπει να κάνετε όταν ακόμη και οι λειτουργίες XPath δεν εντοπίσουν το στοιχείο;
Απάντηση: Σε μια τέτοια περίπτωση, χρησιμοποιούμε τους άξονες XPath μαζί με τις λειτουργίες XPath.
Το δεύτερο μέρος αυτού του άρθρου ασχολείται με τον τρόπο με τον οποίο μπορούμε να χρησιμοποιήσουμε την ιεραρχική μορφή HTML για τον προσδιορισμό του στοιχείου. Θα ξεκινήσουμε με τη λήψη λίγων πληροφοριών σχετικά με τους άξονες XPath.
Q # 2) Τι είναι οι άξονες XPath;
Απάντηση: Ένας άξονας XPath καθορίζει το σύνολο κόμβων σε σχέση με τον τρέχοντα κόμβο (περιβάλλον). Χρησιμοποιείται για τον εντοπισμό του κόμβου που σχετίζεται με τον κόμβο σε αυτό το δέντρο.
Q # 3) Τι είναι ένας κόμβος περιβάλλοντος;
Απάντηση: Ένας κόμβος περιβάλλοντος μπορεί να οριστεί ως ο κόμβος που εξετάζει ο επεξεργαστής XPath.
Διαφορετικοί άξονες XPath που χρησιμοποιούνται στη δοκιμή σεληνίου
Υπάρχουν δεκατρείς διαφορετικοί άξονες που παρατίθενται παρακάτω. Ωστόσο, δεν πρόκειται να τα χρησιμοποιήσουμε όλα κατά τη διάρκεια των δοκιμών σεληνίου.
- πρόγονος : Αυτός ο άξονας υποδεικνύει όλους τους προγόνους σε σχέση με τον κόμβο περιβάλλοντος, φτάνοντας επίσης στον ριζικό κόμβο.
- πρόγονος ή μόνος: Αυτό δείχνει τον κόμβο περιβάλλοντος και όλους τους προγόνους σε σχέση με τον κόμβο περιβάλλοντος και περιλαμβάνει τον ριζικό κόμβο.
- Χαρακτηριστικό: Αυτό δείχνει τα χαρακτηριστικά του κόμβου περιβάλλοντος. Μπορεί να αναπαρασταθεί με το σύμβολο '@'.
- παιδί: Αυτό δείχνει τα παιδιά του κόμβου περιβάλλοντος.
- προς τα κάτω: Αυτό δείχνει τα παιδιά, τα εγγόνια και τα παιδιά τους (εάν υπάρχουν) του κόμβου περιβάλλοντος. Αυτό ΔΕΝ υποδεικνύει το χαρακτηριστικό και το χώρο ονομάτων.
- απόγονος ή μόνος: Αυτό δείχνει τον κόμβο περιβάλλοντος και τα παιδιά και τα εγγόνια και τα παιδιά τους (εάν υπάρχουν) του κόμβου περιβάλλοντος. Αυτό ΔΕΝ υποδεικνύει το χαρακτηριστικό και το χώρο ονομάτων.
- ΕΠΟΜΕΝΟ: Αυτό δείχνει όλους τους κόμβους που εμφανίζονται μετά ο κόμβος περιβάλλοντος στη δομή HTML DOM. Αυτό ΔΕΝ υποδηλώνει απόγονο, χαρακτηριστικό και χώρο ονομάτων.
- ακόλουθος-αδελφός: Αυτό δείχνει όλους τους αδελφικούς κόμβους (ίδιο γονικό με τον κόμβο περιβάλλοντος) ότι εμφανίζομαι μετά τον κόμβο περιβάλλοντος στη δομή HTML DOM. Αυτό ΔΕΝ υποδηλώνει απόγονο, χαρακτηριστικό και χώρο ονομάτων.
- χώρος ονομάτων: Αυτό δείχνει όλους τους κόμβους χώρου ονομάτων του κόμβου περιβάλλοντος.
- μητρική εταιρεία: Αυτό υποδεικνύει τον γονέα του κόμβου περιβάλλοντος.
- προηγούμενος: Αυτό δείχνει όλους τους κόμβους που εμφανίζονται πριν ο κόμβος περιβάλλοντος στη δομή HTML DOM. Αυτό ΔΕΝ υποδηλώνει απόγονο, χαρακτηριστικό και χώρο ονομάτων.
- προηγούμενος-αδελφός: Αυτό δείχνει όλους τους αδελφικούς κόμβους (ίδιο γονικό με τον κόμβο περιβάλλοντος) που εμφανίζονται πριν ο κόμβος περιβάλλοντος στη δομή HTML DOM. Αυτό ΔΕΝ υποδηλώνει απόγονο, χαρακτηριστικό και χώρο ονομάτων.
- εαυτός: Αυτό δείχνει τον κόμβο περιβάλλοντος.
Δομή των αξόνων XPath
Εξετάστε την παρακάτω ιεραρχία για να κατανοήσετε πώς λειτουργεί το XPath Axes.
Ανατρέξτε παρακάτω σε έναν απλό κώδικα HTML για το παραπάνω παράδειγμα. Αντιγράψτε και επικολλήστε τον παρακάτω κώδικα στο πρόγραμμα επεξεργασίας σημειωματάριων και αποθηκεύστε τον ως αρχείο .html.
Animal
Vertebrate
Fish
Mammal
Herbivore
Carnivore
Lion
Tiger
Other
Invertebrate
Insect
Crustacean
Η σελίδα θα μοιάζει παρακάτω. Η αποστολή μας είναι να κάνουμε χρήση των XPath Axes για να βρούμε τα στοιχεία μοναδικά. Ας προσπαθήσουμε να προσδιορίσουμε τα στοιχεία που σημειώνονται στο παραπάνω γράφημα. Ο κόμβος περιβάλλοντος είναι 'Θηλαστικό ζώο'
# 1) Προγόνου
Ημερολόγιο: Για να προσδιορίσετε το στοιχείο του προγόνου από τον κόμβο περιβάλλοντος.
XPath # 1: // div (@ class = «Mammal») / πρόγονος :: div
Το XPath '// div (@ class =' Mammal ') / Leloror :: div' ρίχνει δύο αντίστοιχους κόμβους:
- Το σπονδυλωτό, καθώς είναι ο γονέας του «θηλαστικού», ως εκ τούτου θεωρείται και ο πρόγονος.
- Ζώο όπως είναι ο γονέας του γονέα του «θηλαστικού», ως εκ τούτου θεωρείται πρόγονος.
Τώρα, χρειάζεται μόνο να προσδιορίσουμε ένα στοιχείο που είναι η κατηγορία 'Animal'. Μπορούμε να χρησιμοποιήσουμε το XPath όπως αναφέρεται παρακάτω.
XPath#2: //div(@class='Mammal')/ancestor::div(@class='Animal')
Εάν θέλετε να μεταβείτε στο κείμενο 'Animal', μπορείτε να χρησιμοποιήσετε το XPath παρακάτω.
# 2) Προγονικός ή μόνος
Ημερολόγιο: Για τον προσδιορισμό του κόμβου περιβάλλοντος και του στοιχείου προγόνου από τον κόμβο περιβάλλοντος.
XPath # 1: // div (@ class = «Mammal») / πρόγονος-ή-εαυτός :: div
Το παραπάνω XPath # 1 ρίχνει τρεις αντίστοιχους κόμβους:
- Ζώο (Προγόνου)
- Σπονδυλωτό
- Θηλαστικό
# 3) Παιδί
Ημερολόγιο: Για να αναγνωρίσετε το παιδί του κόμβου περιβάλλοντος 'Mammal'.
XPath # 1: // div (@ class = «Mammal») / παιδί :: div
XPath # 1 βοηθά στον εντοπισμό όλων των παιδιών του κόμβου περιβάλλοντος «Mammal». Εάν θέλετε να λάβετε το συγκεκριμένο θυγατρικό στοιχείο, χρησιμοποιήστε το XPath # 2.
XPath # 2: // div (@ class = «Mammal») / παιδί :: div (@ class = «Herbivore») / h5
# 4) Απόγονος
Ημερολόγιο: Για να προσδιορίσετε τα παιδιά και τα εγγόνια του κόμβου περιβάλλοντος (για παράδειγμα: «Ζώο»).
XPath # 1: // div (@ class = «Animal») / απόγονος :: div
Καθώς το Animal είναι το κορυφαίο μέλος της ιεραρχίας, όλα τα στοιχεία του παιδιού και των απογόνων επισημαίνονται. Μπορούμε επίσης να αλλάξουμε τον κόμβο περιβάλλοντος για την αναφορά μας και να χρησιμοποιήσουμε οποιοδήποτε στοιχείο θέλουμε ως κόμβο.
# 5) Απόγονος ή μόνος
Ημερολόγιο: Να βρει το ίδιο το στοιχείο και τους απογόνους του.
XPath1: // div (@ class = «Animal») / απόγονος-ή-εαυτός :: div
Η μόνη διαφορά μεταξύ του απογόνου και του απογόνου ή του εαυτού είναι ότι τονίζει τον εαυτό του εκτός από το να τονίζει τους απογόνους.
# 6) Ακολουθεί
Ημερολόγιο: Για να βρείτε όλους τους κόμβους που ακολουθούν τον κόμβο περιβάλλοντος. Εδώ, ο κόμβος περιβάλλοντος είναι το div που περιέχει το στοιχείο Mammal.
XPath: // div (@ class = «Mammal») / ακόλουθο :: div
Στους ακόλουθους άξονες, επισημαίνονται όλοι οι κόμβοι που ακολουθούν τον κόμβο περιβάλλοντος, είτε είναι παιδί είτε απόγονος.
# 7) Ακολουθώντας αδέλφια
Ημερολόγιο: Για να βρείτε όλους τους κόμβους μετά τον κόμβο περιβάλλοντος που μοιράζονται τον ίδιο γονέα και είναι αδελφός στον κόμβο περιβάλλοντος.
XPath: // div (@ class = «Mammal») / following-sibling :: div
Η κύρια διαφορά μεταξύ των ακόλουθων και των ακόλουθων αδελφών είναι ότι ο ακόλουθος-αδελφός παίρνει όλους τους αδελφούς κόμβους μετά το περιβάλλον, αλλά θα μοιραστεί επίσης τον ίδιο γονέα.
# 8) Προηγούμενο
Ημερολόγιο: Παίρνει όλους τους κόμβους που έρχονται πριν από τον κόμβο περιβάλλοντος. Μπορεί να είναι ο γονέας ή ο κόμβος παππούδων.
Εδώ ο κόμβος περιβάλλοντος είναι το ασπόνδυλο και οι επισημασμένες γραμμές στην παραπάνω εικόνα είναι όλοι οι κόμβοι που έρχονται πριν από τον κόμβο του ασπόνδυλου.
# 9) Προηγούμενος-αδελφός
Ημερολόγιο: Για να βρείτε τον αδελφό που μοιράζεται τον ίδιο γονέα με τον κόμβο περιβάλλοντος και που έρχεται πριν από τον κόμβο περιβάλλοντος.
Δεδομένου ότι ο κόμβος περιβάλλοντος είναι το ασπόνδυλο, το μόνο στοιχείο που επισημαίνεται είναι το Vertebrate, καθώς αυτά τα δύο είναι αδέλφια και μοιράζονται τον ίδιο γονέα «Animal».
πώς να δημιουργήσετε έναν πίνακα ελέγχου jira
# 10) Γονέας
Ημερολόγιο: Για να βρείτε το γονικό στοιχείο του κόμβου περιβάλλοντος. Εάν ο ίδιος ο κόμβος περιβάλλοντος είναι πρόγονος, δεν θα έχει έναν γονικό κόμβο και δεν θα πάρει αντίστοιχους κόμβους.
Κόμβος περιβάλλοντος # 1: Θηλαστικό
XPath: // div (@ class = «Mammal») / γονέας :: div
Δεδομένου ότι ο κόμβος περιβάλλοντος είναι Mammal, το στοιχείο με το Vertebrate αναδεικνύεται καθώς αυτό είναι το γονικό του Mammal.
Κόμβος περιβάλλοντος # 2: Ζώο
XPath: // div (@ class = «Animal») / γονέας :: div
Δεδομένου ότι ο ίδιος ο κόμβος των ζώων είναι ο πρόγονος, δεν θα επισημάνει κόμβους και ως εκ τούτου δεν βρέθηκαν κόμβοι αντιστοίχισης.
# 11) Εαυτός
Ημερολόγιο: Για να βρείτε τον κόμβο περιβάλλοντος, χρησιμοποιείται ο εαυτός.
Κόμβος περιβάλλοντος: Θηλαστικό ζώο
XPath: // div (@ class = «Mammal») / self :: div
Όπως μπορούμε να δούμε παραπάνω, το θηλαστικό αντικείμενο έχει ταυτοποιηθεί μοναδικά. Μπορούμε επίσης να επιλέξουμε το κείμενο «Mammal χρησιμοποιώντας το παρακάτω XPath.
XPath: // div (@ class = «Mammal») / self :: div / h4
Χρήσεις προγενέστερων και μετά από τους άξονες
Ας υποθέσουμε ότι γνωρίζετε ότι το στοιχείο προορισμού σας είναι πόσες ετικέτες μπροστά ή πίσω από τον κόμβο περιβάλλοντος, μπορείτε να επισημάνετε απευθείας αυτό το στοιχείο και όχι όλα τα στοιχεία.
Παράδειγμα: Προηγούμενο (με ευρετήριο)
Ας υποθέσουμε ότι ο κόμβος περιβάλλοντος είναι 'Άλλος' και θέλουμε να φτάσουμε στο στοιχείο 'Θηλαστικό', θα χρησιμοποιήσουμε την παρακάτω προσέγγιση για να το κάνουμε.
Το πρώτο βήμα: Απλώς χρησιμοποιήστε το προηγούμενο χωρίς να δώσετε καμία τιμή ευρετηρίου.
XPath: // div (@ class = «Other») / προηγούμενο :: div
Αυτό μας δίνει 6 αντίστοιχους κόμβους και θέλουμε μόνο έναν στοχευμένο κόμβο 'Mammal'.
Δεύτερο βήμα: Δώστε την τιμή ευρετηρίου (5) στο στοιχείο div (μετρώντας προς τα πάνω από τον κόμβο περιβάλλοντος).
XPath: // div (@ class = «Other») / προηγούμενο :: div (5)
Με αυτόν τον τρόπο, το στοιχείο 'Θηλαστικό' αναγνωρίστηκε με επιτυχία.
Παράδειγμα: ακολουθώντας (με ευρετήριο)
Ας υποθέσουμε ότι ο κόμβος περιβάλλοντος είναι 'Mammal' και θέλουμε να φτάσουμε στο στοιχείο 'Crustacean', θα χρησιμοποιήσουμε την παρακάτω προσέγγιση για να το κάνουμε.
Το πρώτο βήμα: Απλώς χρησιμοποιήστε τα παρακάτω χωρίς να δώσετε καμία τιμή ευρετηρίου.
XPath: // div (@ class = «Mammal») / ακόλουθο :: div
Αυτό μας δίνει 4 αντίστοιχους κόμβους και θέλουμε μόνο έναν στοχευμένο κόμβο 'Crustacean'
Δεύτερο βήμα: Δώστε την τιμή ευρετηρίου (4) στο στοιχείο div (μετρήστε μπροστά από τον κόμβο περιβάλλοντος).
XPath: // div (@ class = «Other») / following :: div (4)
Με αυτόν τον τρόπο το στοιχείο 'Καρκινοειδές' αναγνωρίστηκε με επιτυχία.
Το παραπάνω σενάριο μπορεί επίσης να ξαναδημιουργηθεί με προηγούμενος-αδελφός και αδελφός εφαρμόζοντας την παραπάνω προσέγγιση.
συμπέρασμα
Το Identification Object είναι το πιο κρίσιμο βήμα για την αυτοματοποίηση οποιασδήποτε ιστοσελίδας. Εάν μπορείτε να αποκτήσετε την ικανότητα να μάθετε το αντικείμενο με ακρίβεια, το 50% του αυτοματισμού σας έχει ολοκληρωθεί. Ενώ υπάρχουν εντοπιστές διαθέσιμοι για την αναγνώριση του στοιχείου, υπάρχουν ορισμένες περιπτώσεις όπου ακόμη και οι εντοπιστές δεν μπορούν να αναγνωρίσουν το αντικείμενο. Σε τέτοιες περιπτώσεις, πρέπει να εφαρμόσουμε διαφορετικές προσεγγίσεις.
Εδώ χρησιμοποιήσαμε τις λειτουργίες XPath και XPath Axes για να προσδιορίσουμε με μοναδικό τρόπο το στοιχείο.
Ολοκληρώνουμε αυτό το άρθρο σημειώνοντας μερικά σημεία που πρέπει να θυμάστε:
- Δεν πρέπει να εφαρμόζετε άξονες 'πρόγονος' στον κόμβο περιβάλλοντος του κόμβου περιβάλλοντος ο ίδιος ο πρόγονος.
- Δεν πρέπει να εφαρμόζετε άξονες 'γονέα' στον κόμβο περιβάλλοντος του κόμβου περιβάλλοντος που είναι ο πρόγονος.
- Δεν πρέπει να εφαρμόζετε άξονες 'θυγατρικού' στον κόμβο περιβάλλοντος του κόμβου περιβάλλοντος που είναι ο απόγονος.
- Δεν πρέπει να εφαρμόζετε άξονες 'απόγονος' στον κόμβο περιβάλλοντος του κόμβου περιβάλλοντος που είναι ο πρόγονος.
- Δεν πρέπει να εφαρμόζετε άξονες 'ακόλουθους' στον κόμβο περιβάλλοντος, είναι ο τελευταίος κόμβος στη δομή εγγράφων HTML.
- Δεν πρέπει να εφαρμόζετε 'προηγούμενους' άξονες στον κόμβο περιβάλλοντος, είναι ο πρώτος κόμβος στη δομή εγγράφων HTML.
Καλή μάθηση !!!
=> Επισκεφθείτε εδώ για την αποκλειστική σειρά εκπαιδευτικών σεληνίου.
Συνιστώμενη ανάγνωση
- Λειτουργίες XPath για δυναμικό XPath στο σελήνιο
- Cucumber Selenium Tutorial: Αγγούρι Java Selenium WebDriver Integration
- Selenium Locators: Προσδιορίστε στοιχεία Web χρησιμοποιώντας το XPath στο Selenium (Παραδείγματα)
- Εισαγωγή στο Selenium WebDriver - Selenium Tutorial # 8
- Tutorial ChromeDriver Selenium: Δοκιμές Webdriver Selenium στο Chrome
- Υλοποίηση του πρώτου μας σεναρίου WebDriver - Selenium WebDriver Tutorial # 10
- 30+ καλύτερα σεμινάρια σεληνίου: Μάθετε το σελήνιο με πραγματικά παραδείγματα
- Χειρισμός Πινάκων Ιστού, Πλαισίων και Δυναμικών Στοιχείων σεναρίου Σεληνίου - Σελήνιο Σεμινάριο # 18