xpath functions dynamic xpath selenium
Αυτό το σεμινάριο εξηγεί τη χρήση των λειτουργιών XPath στον προσδιορισμό των στοιχείων με παραδείγματα:
Πριν από την αυτοματοποίηση οποιασδήποτε ιστοσελίδας είναι απαραίτητο να προσδιορίσουμε σωστά το αντικείμενο, προτού μπορέσουμε να εκτελέσουμε οποιαδήποτε λειτουργία στον ίδιο. Όπως γνωρίζουμε ότι ο ευκολότερος τρόπος αναγνώρισης του στοιχείου είναι με χαρακτηριστικά όπως ID, Όνομα, Σύνδεσμος, Κατηγορία ή οποιοδήποτε άλλο μοναδικό χαρακτηριστικό διαθέσιμο με την ετικέτα όπου βρίσκεται το στοιχείο.
Αυτό είναι δυνατό μόνο όταν αυτά τα χαρακτηριστικά υπάρχουν και / ή είναι μοναδικά, έτσι ώστε το αντικείμενο να αναγνωρίζεται σωστά.
=> Ρίξτε μια ματιά στον οδηγό για αρχάριους του Σεληνίου εδώ.
Τι θα μάθετε:
Επισκόπηση των λειτουργιών XPath
Ας συζητήσουμε το σενάριο όπου τα χαρακτηριστικά δεν είναι άμεσα διαθέσιμα.
Δήλωση προβλήματος
Πώς εντοπίζουμε το στοιχείο εάν οι εντοπιστές όπως το αναγνωριστικό, το όνομα, η τάξη, ο σύνδεσμος κ.λπ. δεν είναι διαθέσιμοι στην ετικέτα στοιχείου;
Αυτό μπορεί να γίνει κατανοητό με το δεδομένο παράδειγμα:
Συνδεθείτε στο Κελάδημα
Όπως μπορείτε να δείτε στο παραπάνω στιγμιότυπο οθόνης, η κεφαλίδα 'Σύνδεση στο Twitter' δεν έχει συνημμένα χαρακτηριστικά. Τούτου λεχθέντος, δεν μπορούμε να χρησιμοποιήσουμε κανέναν από τους εντοπιστές όπως το αναγνωριστικό, την τάξη, τον σύνδεσμο ή το όνομα για να προσδιορίσουμε αυτό το στοιχείο.
συνδεδεμένος κόμβος λίστας c ++
Η προσθήκη Firepath του εργαλείου Firefox δημιούργησε το παρακάτω XPath:
// * (@ id = «σελίδα-κοντέινερ») / div / div (1) / h1
Δεν θα προτείνουμε τη χρήση του παραπάνω XPath ως δομής σελίδας ή του αναγνωριστικού, καθώς μπορεί να αλλάξει δυναμικά. Εάν κάνουμε χρήση αυτού του ασταθούς XPath, ίσως χρειαστεί να αλλάξουμε το XPath πιο συχνά, κάτι που είναι πιο χρονοβόρο για τη συντήρηση. Αυτή είναι μια περίπτωση όπου δεν μπορούμε να χρησιμοποιήσουμε τη γενική έκφραση XPath με εντοπιστές όπως αναγνωριστικό, κλάση, όνομα ή σύνδεσμο.
Λύση
Προσδιορισμός του στοιχείου χρησιμοποιώντας τις λειτουργίες XPath ανά κείμενο
Καθώς έχουμε διαθέσιμο το ορατό κείμενο 'Σύνδεση στο Twitter', θα χρησιμοποιούμε τα ακόλουθα Λειτουργίες XPath για να αναγνωρίσετε μοναδικά το στοιχείο.
- περιέχει () (Με κείμενο)
- ξεκινά με () (Με κείμενο)
- κείμενο()
Οι λειτουργίες XPath όπως περιέχει (), ξεκινά με () και κείμενο () όταν χρησιμοποιούνται με τη βοήθεια του κειμένου 'Σύνδεση στο Twitter' θα μας βοηθήσουν να αναγνωρίσουμε σωστά το στοιχείο και μπορούν να πραγματοποιηθούν περαιτέρω λειτουργίες στο ίδιο.
# 1) Περιέχει () Μέθοδο:
Σύνταξη: Για να βρείτε το στοιχείο web 'Σύνδεση στο Twitter', χρησιμοποιήστε οποιαδήποτε από τις ακόλουθες εκφράσεις XPath που περιλαμβάνει τη μέθοδο περιέχει ().
Με κείμενο
- // h1 (περιέχει (κείμενο (), «Σύνδεση σε»))
- // h1 (περιέχει (κείμενο (), «στο Twitter»))
Σημείωση: 1 αντίστοιχος κόμβος δείχνει ότι το στοιχείο ιστού έχει αναγνωριστεί επιτυχώς.
Από το παραπάνω παράδειγμα, είναι σαφές ότι η μέθοδος () δεν χρειάζεται το απόλυτο (πλήρες) κείμενο για να αναγνωρίσει σωστά το στοιχείο. Το μερικό κείμενο είναι αρκετό για να το αναγνωρίσει σωστά. Ωστόσο, το επιλεγμένο μερικό κείμενο πρέπει να είναι μοναδικό. Ο χρήστης μπορεί εύκολα να αναγνωρίσει το στοιχείο ακόμα και αν ο προσανατολισμός της σελίδας αλλάξει με τη βοήθεια της μεθόδου περιέχει ().
Λάβετε υπόψη ότι ακόμη και αν χρησιμοποιείτε το απόλυτο κείμενο 'Σύνδεση στο Twitter' με τη μέθοδο περιέχει (), το στοιχείο θα αναγνωριστεί σωστά.
# 2) Ξεκινά με () μέθοδο:
Σύνταξη: Για να βρείτε το στοιχείο ιστού 'Σύνδεση στο Twitter', χρησιμοποιήστε το ακόλουθο δείγμα εκφράσεων XPath που έχει τη μέθοδο έναρξης με ().
Με κείμενο
- // h1 (ξεκινά με (κείμενο (), «Σύνδεση»))
- // h1 (ξεκινά με (κείμενο (), «Σύνδεση σε»))
Από το παραπάνω παράδειγμα, είναι σαφές ότι η συνάρτηση XPath ξεκινά με () τη μέθοδο απαιτεί τουλάχιστον την πρώτη λέξη ('Log') του ορατού κειμένου για να προσδιορίσει μοναδικά το στοιχείο. Λειτουργεί επίσης στο μερικό κείμενο και θα αποτύχει εάν δεν συμπεριλάβουμε την πρώτη λέξη του μερικώς ορατού κειμένου.
Λάβετε υπόψη ότι ακόμη και αν χρησιμοποιείτε το απόλυτο κείμενο 'Σύνδεση στο Twitter' με τη μέθοδο έναρξης με (), το στοιχείο θα αναγνωριστεί σωστά.
Μη έγκυρο XPath για εκκίνηση με (): // h1 (ξεκινά με (κείμενο (), «στο Twitter»))
Σημείωση: Κανένας κόμβος που να ταιριάζει δεν δείχνει ότι το στοιχείο ιστού δεν έχει αναγνωριστεί.
# 3) Μέθοδος κειμένου ():
Σύνταξη: Για να βρείτε το στοιχείο ιστού 'Σύνδεση στο Twitter', χρησιμοποιήστε την ακόλουθη παράσταση XPath που έχει τη μέθοδο κειμένου ().
Σε αυτήν την έκφραση, χρησιμοποιούμε το απόλυτο κείμενο που υπάρχει ανάμεσα στην ετικέτα έναρξης. Εάν χρησιμοποιούμε τη λειτουργία κειμένου () με μερικό Xpath όπως εμείς στο περιέχει () και ξεκινά με (), δεν θα μπορούσαμε να βρούμε το στοιχείο.
Μη έγκυρο Xpath για κείμενο ():
Προσδιορισμός του στοιχείου που χρησιμοποιεί τις λειτουργίες XPath ανά χαρακτηριστικό
Χρησιμοποιούμε τις λειτουργίες XPath (περιέχει ή ξεκινά με) με το χαρακτηριστικό όταν υπάρχουν ορισμένες μοναδικά αναγνωρισμένες τιμές χαρακτηριστικών διαθέσιμες στην ετικέτα κοντέινερ. Τα χαρακτηριστικά έχουν πρόσβαση χρησιμοποιώντας το σύμβολο '@'.
Αυτό μπορεί να γίνει κατανοητό με σαφήνεια με το δεδομένο παράδειγμα:
Συνδεθείτε στο Google
# 1) Περιέχει () Μέθοδο:
Σύνταξη: Για να αναγνωρίσετε μοναδικά το στοιχείο κουμπιού 'Αισθάνομαι τυχερός' με τη βοήθεια της λειτουργίας XPath περιέχει () με τη βοήθεια του χαρακτηριστικού.
(i) Κατά χαρακτηριστικό τιμή:
- // input (περιέχει (@ τιμή, «Feeling»))
- // input (περιέχει (@ τιμή, «Lucky»))
Από τις παραπάνω εικόνες, γίνεται κατανοητό ότι η χρήση της τιμής χαρακτηριστικού είτε με τη μέθοδο 'Feeling' είτε με το 'Lucky' with περιέχει () θα αναγνωρίσει μοναδικά το στοιχείο. Ωστόσο, είναι σημαντικό να σημειωθεί ότι ακόμη και αν χρησιμοποιήσουμε το πλήρες περιεχόμενο του χαρακτηριστικού Value, θα αναγνωρίσει σωστά το στοιχείο.
(ii) Με όνομα Όνομα:
//input(contains(@name=’btnI’))
Η μη έγκυρη περίπτωση για τη λειτουργία XPath με το χαρακτηριστικό:
Πρέπει να είμαστε πολύ προσεκτικοί σχετικά με την επιλογή του χαρακτηριστικού που θα χρησιμοποιηθεί με τη μέθοδο περιέχει () και ξεκινά με (). Εάν η τιμή του χαρακτηριστικού δεν είναι μοναδική, δεν θα μπορούμε να προσδιορίσουμε με μοναδικό τρόπο το στοιχείο.
Ας υποθέσουμε ότι, αν πάρουμε το χαρακτηριστικό 'type' κατά την αναγνώριση του κουμπιού 'Αισθάνομαι τυχερός', το XPath δεν θα λειτουργήσει.
2 αντίστοιχοι κόμβοι υποδεικνύουν ότι το στοιχείο δεν έχει αναγνωριστεί σωστά. Εδώ η τιμή χαρακτηριστικού type δεν είναι μοναδική.
# 2) Ξεκινά με () μέθοδο:
Η μέθοδος begin-with () με το χαρακτηριστικό είναι πολύ χρήσιμη όταν πρέπει να βρούμε τα στοιχεία των οποίων το προηγούμενο μέρος του χαρακτηριστικού παραμένει σταθερό ενώ το τελευταίο μέρος συνεχίζει να αλλάζει. Αυτή η προσέγγιση είναι πολύ χρήσιμη όταν τα αντικείμενα αλλάζουν δυναμικά την αξία των χαρακτηριστικών της. Αυτό μπορεί επίσης να χρησιμοποιηθεί αν θέλουμε να καταγράψουμε παρόμοια είδη στοιχείων.
Παω σε Σύνδεση στο Facebook
Ελέγξτε το πρώτο πλαίσιο κειμένου 'Όνομα' και το δεύτερο πλαίσιο κειμένου 'Επώνυμο' της φόρμας εγγραφής.
Προσδιορίζεται το πρώτο πλαίσιο κειμένου «Όνομα».
Αναγνωρίζεται το δεύτερο πλαίσιο κειμένου «Επώνυμο».
Και στα δύο πλαίσια κειμένου που προσδιορίζονται για την εγγραφή στο Facebook, το αρχικό μέρος των χαρακτηριστικών id παραμένει αμετάβλητο.
Όνομα id = 'u_0_2'
Επώνυμο id = «u_0_4»
Αυτό είναι το σενάριο όπου μπορούμε να χρησιμοποιήσουμε το χαρακτηριστικό begin-with () για να πάρουμε όλα τα στοιχεία κάτω από αυτόν τον τύπο χαρακτηριστικού id. Λάβετε υπόψη ότι παίρνουμε αυτά τα δύο πεδία μόνο για αναφορά. Ωστόσο, θα μπορούσαν να υπάρχουν περισσότερα πεδία στην οθόνη με αναγνωριστικά που ξεκινούν με 'u_0_'.
Αρχίζει με () (Ανά αναγνωριστικό χαρακτηριστικού)
//input(starts-with(@id,”u_0_”))
Σημαντική σημείωση: Εδώ χρησιμοποιήσαμε διπλά εισαγωγικά αντί για μεμονωμένα εισαγωγικά. Αλλά μεμονωμένα εισαγωγικά θα λειτουργήσουν επίσης με τη μέθοδο έναρξης με.
11 αντίστοιχοι κόμβοι υποδεικνύουν ότι αυτό το XPath έχει εντοπίσει όλα τα στοιχεία που ξεκινούν τα αναγνωριστικά από το 'u_0_'. Το τελευταίο μέρος του αναγνωριστικού (2 για το όνομα, 4 για το επώνυμο, κ.λπ.) καθορίζει τον τρόπο με τον οποίο αναγνωρίζουμε μοναδικά το στοιχείο.
Μπορούμε να χρησιμοποιήσουμε το χαρακτηριστικό 'Έναρξη με λειτουργία' όπου πρέπει να συλλέξουμε τον παρόμοιο τύπο στοιχείων σε μια λίστα και να επιλέξουμε δυναμικά ένα από αυτά παρακάμπτοντας το όρισμα σε μια γενική μέθοδο για τον μοναδικό προσδιορισμό του στοιχείου.
Ακολουθήστε το παρακάτω παράδειγμα για να χρησιμοποιήσετε τη συνάρτηση start-with προς όφελός μας.
Δείγμα κώδικα:
/* Generic Method */ public void xpathLoc(String identifier){ //The below step identifies the element “First Name” uniquely when the argument is “2” WebElement E1=d1.findElement(By.xpath('//input(starts-with(@id,”u_0_”+identifier ))')); E1.sendKeys(“Test1”); /* This step enters the value of First Name as “Test 1” */ } /* Main Method */ public static void main(String() args) { xpathLoc(“2”); --- This step calls the xpathLoc() method to identify the first name. }
Σημείωση: Το Eclipse ενδέχεται να μην επιτρέπει τη χρήση διπλών εισαγωγικών. Ίσως χρειαστεί να καταφύγετε σε διαφορετικό κώδικα για να δημιουργήσετε δυναμικό XPath.
Το δείγμα κώδικα δίνεται για αναφορά. Μπορείτε να το βελτιώσετε ώστε να ταιριάζει σε όλα τα στοιχεία και τις λειτουργίες που θέλετε να εκτελέσετε και τις τιμές που θέλετε να εισαγάγετε (σε περίπτωση πεδίων κειμένου) για να κάνετε τον κώδικα πιο ευέλικτο.
συμπέρασμα
Αυτό το άρθρο εξήγησε πώς μπορούμε να κάνουμε χρήση των λειτουργιών XPath περιέχει (), ξεκινά με () και κείμενο () με χαρακτηριστικό και κείμενο για τον μοναδικό προσδιορισμό των στοιχείων στη δομή HTML DOM.
Παρακάτω είναι μερικές από τις παρατηρήσεις που μπορούμε να αντλήσουμε για τις λειτουργίες XPath:
- Χρησιμοποιήστε τη μέθοδο 'περιέχει ()' στο XPath εάν γνωρίζετε το μερικό σταθερό ορατό κείμενο ή χαρακτηριστικό.
- Χρησιμοποιήστε τη μέθοδο 'begin-with ()' στο XPath εάν γνωρίζετε το αρχικό μερικό σταθερό ορατό κείμενο ή χαρακτηριστικό.
- Μπορείτε επίσης να χρησιμοποιήσετε τη μέθοδο περιέχει () και ξεκινά με () με απόλυτο κείμενο ή χαρακτηριστικό.
- Χρησιμοποιήστε τη μέθοδο 'text ()' στο XPath εάν γνωρίζετε το απόλυτο ορατό κείμενο.
- Δεν μπορείτε να χρησιμοποιήσετε τη μέθοδο κειμένου () με το μερικό κείμενο.
- Δεν μπορείτε να χρησιμοποιήσετε τη μέθοδο έναρξης με () εάν το αρχικό κείμενο δεν χρησιμοποιείται στο XPath ή εάν το αρχικό κείμενο αλλάζει συνεχώς.
Στο επόμενο σεμινάριο, θα μάθουμε πώς να κάνουμε χρήση των XPath Axes με λειτουργίες XPath για να βελτιώσουμε περαιτέρω τη θέση των στοιχείων στην διαθέσιμη ιστοσελίδα.
=> Διαβάστε τη σειρά προπόνησης Easy Selenium.
Συνιστώμενη ανάγνωση
- Selenium Locators: Προσδιορίστε στοιχεία Web χρησιμοποιώντας το XPath στο Selenium (Παραδείγματα)
- Χειρισμός Πινάκων Ιστού, Πλαισίων και Δυναμικών Στοιχείων σεναρίου Σεληνίου - Σελήνιο Σεμινάριο # 18
- Λειτουργίες συμβολοσειράς Python
- Xpath Extractor Post-Processor στο JMeter
- Selenium Find Element By Text Tutorial με παραδείγματα
- Cucumber Selenium Tutorial: Αγγούρι Java Selenium WebDriver Integration
- Ένα περιεκτικό σεμινάριο XPath - XML Path Language
- Εισαγωγή στο Selenium WebDriver - Selenium Tutorial # 8