Εντοπιστές σε Selenium
⚡ Έξυπνη Σύνοψη
Εντοπιστές σε Selenium είναι εντολές που κατευθύνουν τη μηχανή αυτοματισμού να αναγνωρίσει στοιχεία GUI, όπως πλαίσια κειμένου, κουμπιά και πλαίσια ελέγχου. Αυτή η αναφορά εξηγεί τους τύπους εντοπιστή ID, Name, Link Text, DOM και XPath με πρακτικά παραδείγματα, κανόνες σύνταξης και στρατηγικές επιλογής για αξιόπιστα σενάρια αυτοματισμού ιστού.

Σε τι χρησιμεύουν οι εντοπιστές; Selenium?
Ένας εντοπιστής είναι μια εντολή που κατευθύνει Selenium IDE ή Selenium WebDriver στο σωστό στοιχείο GUI, όπως ένα πλαίσιο κειμένου, ένα κουμπί, έναν σύνδεσμο ή ένα πλαίσιο ελέγχου, στο οποίο πρέπει να εκτελεστεί μια ενέργεια. Ο προσδιορισμός του σωστού στοιχείου GUI αποτελεί προϋπόθεση για τη δημιουργία οποιουδήποτε αξιόπιστου σεναρίου αυτοματισμού. Ωστόσο, η ακριβής αναγνώριση είναι πιο δύσκολη από ό,τι ακούγεται. Μερικές φορές, μπορεί να καταλήξετε να αλληλεπιδράτε με λάθος στοιχείο ή χωρίς κανένα στοιχείο. Για να αντιμετωπίσετε αυτό το πρόβλημα, Selenium προσφέρει μια ποικιλία στρατηγικών εντοπισμού που επιτρέπουν την ακριβή στόχευση στοιχείων GUI.
Ενώ ορισμένες εντολές, όπως η εντολή «άνοιγμα», δεν απαιτούν εντοπιστή, η πλειονότητα Selenium Οι εντολές εξαρτώνται από τους εντοπιστές στοιχείων. Η επιλογή του εντοπιστή εξαρτάται σε μεγάλο βαθμό από την Εφαρμογή σας υπό Δοκιμή (AUT). Σε αυτό το σεμινάριο, θα εναλλάσσουμε μεταξύ του Facebook και του Mercury Επίδειξη ιστότοπου Tours (newtours.demoaut), με βάση τους εντοπιστές που υποστηρίζει κάθε εφαρμογή. Ομοίως, στη δική σας δοκιμών έργο, θα επιλέξετε έναν εντοπιστή στοιχείων στο Selenium WebDriver με βάση τη δομή της εφαρμογής σας.
Εντοπισμός με ταυτότητα
Αυτή είναι η πιο συνηθισμένη μέθοδος εντοπισμού στοιχείων, επειδή τα αναγνωριστικά προορίζονται να είναι μοναδικά για κάθε στοιχείο σε μια σελίδα. Όποτε υπάρχει ένα χαρακτηριστικό αναγνωριστικού, θα πρέπει να είναι η πρώτη σας επιλογή για γρήγορα, σταθερά και ευανάγνωστα σενάρια δοκιμών.
Target Μορφή: id=id του στοιχείου
Για αυτό το παράδειγμα, θα χρησιμοποιήσουμε μια σελίδα επίδειξης στο Facebook επειδή Mercury Το Tours δεν χρησιμοποιεί χαρακτηριστικά ID για τα κύρια πεδία της φόρμας.
Βήμα 1) Χρησιμοποιήστε αυτήν τη σελίδα επίδειξης https://demo.guru99.com/test/facebook.html για δοκιμή. Ελέγξτε το πλαίσιο κειμένου "Email ή Τηλέφωνο" χρησιμοποιώντας τα ενσωματωμένα Εργαλεία Προγραμματιστή του προγράμματος περιήγησής σας (πατήστε F12 στο Chrome, Edge ή Firefox) και σημειώστε το αναγνωριστικό του. Σε αυτήν την περίπτωση, το αναγνωριστικό είναι «email».
Βήμα 2) Εκκίνηση Selenium IDE και πληκτρολογήστε "id=email" στο Target πλαίσιο. Κάντε κλικ στο κουμπί Εύρεση και παρατηρήστε ότι το πλαίσιο κειμένου "Email ή Τηλέφωνο" επισημαίνεται με κίτρινο χρώμα με πράσινο περίγραμμα, υποδεικνύοντας ότι Selenium Το IDE έχει εντοπίσει σωστά το στοιχείο.
Εντοπισμός με Όνομα
Ο εντοπισμός στοιχείων με βάση το όνομα είναι παρόμοιος με τον εντοπισμό με βάση το αναγνωριστικό, εκτός από το ότι χρησιμοποιούμε το "όνομα =" πρόθεμα αντί για αυτό. Αυτή η προσέγγιση είναι χρήσιμη όταν τα στοιχεία δεν έχουν αναγνωριστικό αλλά έχουν ένα καθορισμένο χαρακτηριστικό ονόματος.
Target Μορφή: όνομα=όνομα του στοιχείου
Για την επόμενη επίδειξη, θα χρησιμοποιήσουμε Mercury Περιηγήσεις επειδή όλα τα σημαντικά στοιχεία φόρμας στον ιστότοπο φέρουν ένα χαρακτηριστικό ονόματος.
Βήμα 1) Πλοηγηθείτε στο https://demo.guru99.com/test/newtours/ και χρησιμοποιήστε τα Εργαλεία Προγραμματιστή του προγράμματος περιήγησης για να ελέγξετε το πλαίσιο κειμένου "Όνομα Χρήστη". Σημειώστε το χαρακτηριστικό name.
Εδώ, το όνομα του στοιχείου είναι "όνομα χρήστη".
Βήμα 2) In Selenium IDE, πληκτρολογήστε "όνομα=όνομα χρήστη" στο Target πλαίσιο και κάντε κλικ στο κουμπί Εύρεση. Selenium Το IDE θα πρέπει να εντοπίσει το πλαίσιο κειμένου Όνομα χρήστη επιλέγοντάς το.
Πώς να εντοπίσετε το στοιχείο κατά όνομα χρησιμοποιώντας φίλτρα
Τα φίλτρα είναι χρήσιμα όταν πολλά στοιχεία μοιράζονται το ίδιο χαρακτηριστικό ονόματος. Τα φίλτρα είναι πρόσθετα χαρακτηριστικά που χρησιμοποιούνται για τη διάκριση στοιχείων που έχουν το ίδιο όνομα. Χωρίς φίλτρα, Selenium θα προεπιλογή μόνο στο πρώτο στοιχείο που ταιριάζει.
Target Μορφή: name=name_of_the_element filter=value_of_filter
Ας δούμε ένα παράδειγμα.
Βήμα 1) Συνδεθείτε στο Mercury Περιηγήσεις.
Εγγραφή στο Mercury Περιηγήσεις που χρησιμοποιούν το "tutorial" ως όνομα χρήστη και κωδικό πρόσβασης. Θα πρέπει να εμφανιστεί η σελίδα Flight Finder, όπως φαίνεται παρακάτω.
Βήμα 2) Χρησιμοποιήστε τα Εργαλεία Προγραμματιστή για να ελέγξετε τα χαρακτηριστικά VALUE.
Παρατηρήστε ότι τα κουμπιά επιλογής Round Trip και One Way έχουν το ίδιο όνομα "tripType". Ωστόσο, έχουν διαφορετικά χαρακτηριστικά VALUE, επομένως μπορούμε να χρησιμοποιήσουμε κάθε τιμή ως φίλτρο.
Βήμα 3) Κάντε κλικ στην πρώτη γραμμή στον επεξεργαστή.
- Θα έχουμε πρώτα πρόσβαση στο κουμπί επιλογής One Way. Κάντε κλικ στην πρώτη γραμμή στο Selenium Επεξεργαστής IDE.
- Στο πλαίσιο Εντολή, εισαγάγετε την εντολή "κλικ".
- Στο Target Στο πλαίσιο, πληκτρολογήστε “name=tripType value=oneway”. Το τμήμα “value=oneway” χρησιμεύει ως φίλτρο μας.
Βήμα 4) Κάντε κλικ στο κουμπί Εύρεση.
Σημειώσε ότι Selenium Το IDE επισημαίνει το κουμπί επιλογής One Way με πράσινο χρώμα, επιβεβαιώνοντας ότι η πρόσβαση στο στοιχείο έχει πραγματοποιηθεί με επιτυχία μέσω του χαρακτηριστικού VALUE.
Βήμα 5) Επιλέξτε το κουμπί επιλογής Μονόδρομη λειτουργία.
Πατήστε το πλήκτρο "X" στο πληκτρολόγιό σας για να εκτελέσετε την εντολή κλικ. Το κουμπί επιλογής Μονόδρομη λειτουργία είναι πλέον επιλεγμένο.
Μπορείτε να εκτελέσετε την ίδια ενέργεια στο κουμπί επιλογής Round Trip, αυτή τη φορά χρησιμοποιώντας ως στόχο το "name=tripType value=roundtrip".
Εντοπισμός μέσω κειμένου συνδέσμου
Αυτή η στρατηγική εντοπισμού ισχύει μόνο για κείμενα υπερσυνδέσμων. Αποκτούμε πρόσβαση στον σύνδεσμο προσθέτοντας στον στόχο το πρόθεμα "link=" ακολουθούμενο από το ορατό κείμενο υπερσυνδέσμου. Αυτή η μέθοδος είναι ιδιαίτερα ευανάγνωστη και λειτουργεί καλά για δοκιμές πλοήγησης.
Target Μορφή: link=link_text
Στο ακόλουθο παράδειγμα, θα έχουμε πρόσβαση στον σύνδεσμο «ΕΓΓΡΑΦΗ» που βρίσκεται στο Mercury Αρχική σελίδα περιηγήσεων.
Βήμα 1)
- Αρχικά, βεβαιωθείτε ότι έχετε αποσυνδεθεί από το Mercury Περιηγήσεις.
- Πλοηγηθείτε με το Mercury Αρχική σελίδα περιηγήσεων.
Βήμα 2)
- Χρησιμοποιήστε τα Εργαλεία Προγραμματιστή για να ελέγξετε τον σύνδεσμο «ΕΓΓΡΑΦΗ». Το κείμενο του συνδέσμου εμφανίζεται μεταξύ των ετικετών αγκύρωσης ανοίγματος και κλεισίματος.
- Σε αυτήν την περίπτωση, το κείμενο του συνδέσμου είναι «ΕΓΓΡΑΦΗ». Αντιγράψτε το κείμενο του συνδέσμου.
Βήμα 3) Αντιγράψτε το κείμενο του συνδέσμου και επικολλήστε το στο Selenium IDE Target κουτί. Τοποθετήστε το πρόθεμα με "link=".
Βήμα 4) Κάντε κλικ στο κουμπί Εύρεση. Selenium Το IDE θα επισημάνει σωστά τον σύνδεσμο REGISTER.
Βήμα 5) Για περαιτέρω επαλήθευση, πληκτρολογήστε "clickAndWait" στο πλαίσιο Command και εκτελέστε το. Selenium Το IDE θα κάνει κλικ στον σύνδεσμο ΕΓΓΡΑΦΗ με επιτυχία και θα σας μεταφέρει στη σελίδα εγγραφής που εμφανίζεται παρακάτω.
Εντοπισμός κατά DOM (Μοντέλο αντικειμένου εγγράφου)
The Μοντέλο αντικειμένου εγγράφου (DOM), με απλά λόγια, περιγράφει τον τρόπο με τον οποίο τα στοιχεία HTML δομούνται ως ένα δέντρο κόμβων. Selenium Το IDE μπορεί να πλοηγηθεί σε αυτό το δέντρο για να αποκτήσει πρόσβαση σε στοιχεία σελίδας. Όταν χρησιμοποιείται αυτή η μέθοδος, το Target Το πλαίσιο ξεκινά πάντα με «dom=document…». Το πρόθεμα «dom=» συνήθως παραλείπεται επειδή Selenium Το IDE ερμηνεύει αυτόματα οποιαδήποτε τιμή που ξεκινά με "έγγραφο" ως διαδρομή DOM.
Υπάρχουν τέσσερις βασικοί τρόποι για να εντοπίσετε ένα στοιχείο μέσω του DOM στο Selenium:
- getElementById
- getElementsByName
- dom:name (ισχύει μόνο για στοιχεία σε μια ονομαστική φόρμα)
- dom:index
Εντοπισμός κατά DOM – getElementById
Ας εξερευνήσουμε πρώτα τη μέθοδο getElementById του DOM στο SeleniumΑυτή η μέθοδος επιστρέφει ένα μόνο στοιχείο αντιστοιχίζοντας το χαρακτηριστικό ID του.
Σύνταξη
document.getElementById("id of the element")
- id του στοιχείου = η τιμή του χαρακτηριστικού ID του στοιχείου στο οποίο θα γίνει πρόσβαση. Αυτή η τιμή πρέπει πάντα να περικλείεται σε εισαγωγικά.
Βήμα 1) Χρησιμοποιήστε αυτήν τη σελίδα επίδειξης https://demo.guru99.com/test/facebook.htmlΠλοηγηθείτε σε αυτό και χρησιμοποιήστε τα Εργαλεία προγραμματιστή για να ελέγξετε το πλαίσιο ελέγχου "Να διατηρηθώ συνδεδεμένος". Σημειώστε το αναγνωριστικό του.
Το αναγνωριστικό που πρέπει να χρησιμοποιήσουμε είναι το "persist_box".
Βήμα 2) Ανοικτό Selenium IDE και στο Target πληκτρολογήστε document.getElementById(“persist_box”) και, στη συνέχεια, κάντε κλικ στην επιλογή Εύρεση. Selenium Το IDE θα εντοπίσει το πλαίσιο ελέγχου "Να παραμείνω συνδεδεμένος". Παρόλο που δεν μπορεί να επισημάνει το εσωτερικό του πλαισίου ελέγχου, περιβάλλει το στοιχείο με ένα φωτεινό πράσινο περίγραμμα, όπως φαίνεται παρακάτω.
Εντοπισμός κατά DOM – getElementsByName
Η μέθοδος getElementById έχει πρόσβαση μόνο σε ένα στοιχείο κάθε φορά, δηλαδή στο στοιχείο με το καθορισμένο ID. Η μέθοδος getElementsByName συμπεριφέρεται διαφορετικά. Επιστρέφει έναν πίνακα στοιχείων που μοιράζονται το καθορισμένο όνομα. Η πρόσβαση σε μεμονωμένα στοιχεία γίνεται χρησιμοποιώντας έναν αριθμητικό δείκτη που ξεκινά από το 0.
Σύνταξη
document.getElementsByName("name")[index]
- name = όνομα του στοιχείου όπως ορίζεται από το χαρακτηριστικό 'όνομα' του
- index = ένας ακέραιος αριθμός που υποδεικνύει ποιο στοιχείο εντός του πίνακα του getElementsByName θα χρησιμοποιηθεί.
Βήμα 1) Πλοηγηθείτε με το Mercury Μεταβείτε στην αρχική σελίδα της εκδρομής και συνδεθείτε χρησιμοποιώντας το "tutorial" ως όνομα χρήστη και κωδικό πρόσβασης. Το πρόγραμμα περιήγησης θα φορτώσει την οθόνη Flight Finder.
Βήμα 2) Χρησιμοποιήστε τα Εργαλεία Προγραμματιστή για να ελέγξετε τα τρία κουμπιά επιλογής στο κάτω μέρος της σελίδας (Οικονομική θέση, Διακεκριμένη θέση και Πρώτη θέση). Παρατηρήστε ότι όλα έχουν το ίδιο όνομα, "servClass".
Βήμα 3) Αρχικά, ας αποκτήσουμε πρόσβαση στο κουμπί επιλογής «Οικονομική θέση». Από τα τρία κουμπιά επιλογής, αυτό το στοιχείο εμφανίζεται πρώτο, επομένως ο δείκτης του είναι 0. Selenium IDE, πληκτρολογήστε document.getElementsByName(“servClass”)[0] και κάντε κλικ στο κουμπί Εύρεση. Selenium Το IDE θα αναγνωρίσει σωστά το κουμπί επιλογής Οικονομικής θέσης.
Βήμα 4) Αλλάξτε τον αριθμό ευρετηρίου σε 1, έτσι ώστε το δικό σας Target γίνεται document.getElementsByName(“servClass”)[1]. Κάντε κλικ στο κουμπί Εύρεση και Selenium Το IDE θα επισημάνει το κουμπί επιλογής «Business class» όπως φαίνεται παρακάτω.
Εντοπισμός κατά DOM – dom:name
Όπως αναφέρθηκε προηγουμένως, αυτή η μέθοδος ισχύει μόνο εάν το στοιχείο στο οποίο αποκτάτε πρόσβαση περιέχεται σε μια ονομασμένη φόρμα. Η διαδρομή εντοπισμού ξεκινά από τη φόρμα και, στη συνέχεια, οδηγεί στο στοιχείο-στόχο με βάση το όνομα.
Σύνταξη
document.forms["name of the form"].elements["name of the element"]
- όνομα της φόρμας = η τιμή του χαρακτηριστικού name της ετικέτας φόρμας που περιέχει το στοιχείο στο οποίο θέλετε να αποκτήσετε πρόσβαση
- όνομα του στοιχείου = η τιμή του χαρακτηριστικού ονόματος του στοιχείου στο οποίο θέλετε να αποκτήσετε πρόσβαση
Βήμα 1) Πλοηγηθείτε στο Mercury Αρχική σελίδα περιηγήσεων https://demo.guru99.com/test/newtours/ και χρησιμοποιήστε τα Εργαλεία Προγραμματιστή για να ελέγξετε το πλαίσιο κειμένου Όνομα Χρήστη. Παρατηρήστε ότι περιέχεται σε μια φόρμα με το όνομα "home".
Βήμα 2) In Selenium IDE, πληκτρολογήστε document.forms[“home”].elements[“userName”] και κάντε κλικ στο κουμπί Εύρεση. Selenium Το IDE θα έχει πρόσβαση στο στοιχείο με επιτυχία.
Εντοπισμός κατά DOM – dom:index
Αυτή η μέθοδος εφαρμόζεται ακόμα και όταν το στοιχείο δεν βρίσκεται μέσα σε μια ονομασμένη φόρμα, επειδή χρησιμοποιεί το ευρετήριο της φόρμας αντί για το όνομά της. Αυτό είναι χρήσιμο για παλαιότερες σελίδες ή αυτόματα δημιουργημένες φόρμες όπου η ονομασία δεν είναι διαθέσιμη.
Σύνταξη
document.forms[index of the form].elements[index of the element]
- δείκτης της φόρμας = ο αριθμός ευρετηρίου (ξεκινώντας από το 0) της φόρμας σε σχέση με ολόκληρη τη σελίδα
- δείκτης του στοιχείου = ο αριθμός δείκτη (ξεκινώντας από το 0) του στοιχείου σε σχέση με τη μορφή που το περιέχει
Θα έχουμε πρόσβαση στο πλαίσιο κειμένου «Τηλέφωνο» στο Mercury Σελίδα εγγραφής σε εκδρομές. Η φόρμα σε αυτήν τη σελίδα δεν έχει ούτε όνομα ούτε χαρακτηριστικό αναγνωριστικού, επομένως αποτελεί καλό παράδειγμα.
Βήμα 1) Πλοηγηθείτε με το Mercury Στη σελίδα Εγγραφής Περιηγήσεων και ελέγξτε το πλαίσιο κειμένου Τηλέφωνο. Παρατηρήστε ότι η γύρω φόρμα δεν έχει ούτε χαρακτηριστικά Αναγνωριστικού ούτε ονόματος.
Βήμα 2) Εισαγάγετε document.forms[0].elements[3] στο Selenium IDE Target πλαίσιο και κάντε κλικ στο κουμπί Εύρεση. Selenium Το IDE θα έχει σωστή πρόσβαση στο πλαίσιο κειμένου "Τηλέφωνο".
Βήμα 3) Εναλλακτικά, μπορείτε να χρησιμοποιήσετε το όνομα του στοιχείου αντί για τον δείκτη του για το ίδιο αποτέλεσμα. Πληκτρολογήστε document.forms[0].elements[“phone”] στο Target Το πλαίσιο κειμένου Τηλέφωνο θα εξακολουθεί να είναι επισημασμένο.
Εντοπισμός από το XPath
Το XPath είναι η γλώσσα ερωτημάτων που χρησιμοποιείται για την πλοήγηση σε κόμβους XML (Extensible Markup Language). Επειδή η HTML μπορεί να θεωρηθεί ως υλοποίηση της XML, XPath μπορεί επίσης να εντοπίσει στοιχεία HTML. Είναι μια από τις πιο ισχυρές στρατηγικές εντοπισμού στο Selenium.
- Πλεονέκτημα: Μπορεί να έχει πρόσβαση σχεδόν σε οποιοδήποτε στοιχείο, συμπεριλαμβανομένων εκείνων χωρίς χαρακτηριστικά κλάσης, ονόματος ή αναγνωριστικού.
- Μειονέκτημα: Είναι η πιο σύνθετη στρατηγική εντοπισμού λόγω των πολλών κανόνων και των παραλλαγών σύνταξης που διαθέτει.
Τα σύγχρονα εργαλεία προγραμματιστών προγραμμάτων περιήγησης μπορούν να δημιουργήσουν αυτόματα εκφράσεις XPath. Στο Chrome, Edge ή Firefox, κάντε δεξί κλικ σε ένα στοιχείο στον πίνακα Στοιχεία και επιλέξτε Αντιγραφή > Αντιγραφή XPath. Στο ακόλουθο παράδειγμα, θα έχουμε πρόσβαση σε μια εικόνα που δεν μπορεί να εντοπιστεί χρησιμοποιώντας τις μεθόδους που συζητήθηκαν προηγουμένως.
Βήμα 1) Πλοηγηθείτε με το Mercury Μεταβείτε στην αρχική σελίδα περιήγησης και χρησιμοποιήστε τα Εργαλεία προγραμματιστή για να ελέγξετε το πορτοκαλί ορθογώνιο στα δεξιά του κίτρινου πλαισίου "Σύνδεσμοι", όπως φαίνεται παρακάτω.
Βήμα 2) Κάντε δεξί κλικ στον κώδικα HTML του στοιχείου και, στη συνέχεια, επιλέξτε την επιλογή "Αντιγραφή XPath".
Βήμα 3) In Selenium IDE, πληκτρολογήστε μια μοναδική κάθετο "/" στο Target και, στη συνέχεια, επικολλήστε το XPath που αντιγράψατε στο προηγούμενο βήμα. Η είσοδος στο Target Το πλαίσιο πρέπει τώρα να ξεκινά με δύο κάθετες προς τα εμπρός "//".
Βήμα 4) Κάντε κλικ στο κουμπί Εύρεση. Selenium Το IDE θα επισημάνει το πορτοκαλί πλαίσιο, όπως φαίνεται παρακάτω.
Γιατί έχει σημασία η επιλογή του σωστού εντοπιστή
Η επιλογή της σωστής στρατηγικής εντοπισμού είναι μια από τις πιο σημαντικές αποφάσεις Selenium αυτοματοποίηση επειδή επηρεάζει άμεσα τη σταθερότητα του σεναρίου, την ταχύτητα εκτέλεσης και το μακροπρόθεσμο κόστος συντήρησης. Ένας κακώς επιλεγμένος εντοπιστής μπορεί να προκαλέσει ασταθείς δοκιμές, ψευδείς αποτυχίες και συχνή επανεπεξεργασία κάθε φορά που αλλάζει το περιβάλλον χρήστη της εφαρμογής. Η σειρά προτίμησης που συνιστούν οι έμπειροι μηχανικοί αυτοματισμού είναι πρώτα το ID, στη συνέχεια το Name, ακολουθούμενο από το CSS Selector, το Link Text και τέλος το XPath.
Οι εντοπιστές που βασίζονται σε αναγνωριστικά είναι οι ταχύτεροι επειδή η αναζήτηση του προγράμματος περιήγησης είναι βελτιστοποιημένη για μοναδικά αναγνωριστικά. Οι εντοπιστές που βασίζονται σε ονόματα είναι σχεδόν εξίσου αποτελεσματικοί όταν τα ονόματα είναι μοναδικά. Οι επιλογείς CSS και το XPath παρέχουν ευελιξία, αλλά τείνουν να είναι πιο αργοί και πιο εύθραυστοι όταν οι προγραμματιστές αναδιαμορφώνουν το DOM. Το Link Text είναι εξαιρετικό για συνδέσμους πλοήγησης, αλλά προσφέρει περιορισμένη επαναχρησιμοποίηση.
Ο σταθερός αυτοματισμός εξαρτάται επίσης από τη συνεργασία με τους προγραμματιστές. Όταν οι δοκιμαστές ζητούν συνεπή και ουσιαστικά χαρακτηριστικά ID ή data-* κατά τη διάρκεια των κριτικών κώδικα, η ανθεκτικότητα του εντοπιστή βελτιώνεται σημαντικά. Αποφύγετε να βασίζεστε σε αυτόματα δημιουργούμενα ID (όπως αυτά που παράγονται από frameworks), επειδή ενδέχεται να αλλάζουν μεταξύ των builds. Δίνοντας προτεραιότητα σε ευανάγνωστους, καθοδηγούμενους από την πρόθεση εντοπιστές, οι ομάδες μπορούν να διατηρήσουν τις σουίτες δοκιμών συντηρήσιμες και να μειώσουν το τεχνικό χρέος καθώς η εφαρμογή εξελίσσεται.
καλυτερα Practices for Writing Reliable Locators
Οι αξιόπιστοι εντοπιστές αποτελούν το θεμέλιο μιας συντηρήσιμης Selenium σουίτα δοκιμών. Οι ακόλουθες πρακτικές βοηθούν στη μείωση των σφαλμάτων σεναρίων, στη βελτίωση της αναγνωσιμότητας και στις δοκιμές που είναι ανθεκτικές στις αλλαγές του περιβάλλοντος εργασίας χρήστη.
- Προτιμώνται μοναδικά αναγνωριστικά: Να ελέγχετε πάντα πρώτα για ένα χαρακτηριστικό αναγνωριστικού. Τα αναγνωριστικά προορίζονται να είναι μοναδικά μέσα σε μια σελίδα και αποτελούν την πιο αποδοτική επιλογή.
- Χρησιμοποιήστε σημασιολογικά χαρακτηριστικά Name και data-*: Ενθαρρύνετε τους προγραμματιστές να προσθέσουν σταθερά χαρακτηριστικά δοκιμής, όπως data-testid ή data-qa. Αυτά παραμένουν συνεπή ακόμα και όταν αλλάζουν οι κλάσεις CSS.
- Αποφύγετε την απόλυτη XPath: Απόλυτες διαδρομές όπως /html/body/div[2]/div[3]/span διακόπτονται εύκολα. Χρησιμοποιήστε σχετικές εκφράσεις XPath με χαρακτηριστικά όπως //input[@name='userName'].
- Συνδυάστε χαρακτηριστικά για ακρίβεια: Όταν ένα μεμονωμένο χαρακτηριστικό δεν είναι μοναδικό, συνδυάστε πολλά χαρακτηριστικά (για παράδειγμα, //button[@type='submit' και @name='login']) για να στοχεύσετε το σωστό στοιχείο.
- Χρησιμοποιήστε το κείμενο με σύνεση: Οι εντοπιστές που εξαρτώνται από ορατό κείμενο ενδέχεται να μην είναι διαθέσιμοι σε διάφορες γλώσσες. Χρησιμοποιήστε εντοπιστές που βασίζονται σε κείμενο μόνο όταν το περιεχόμενο είναι σταθερό και μονογλωσσικό.
- Κεντρικοποίηση εντοπιστών: Αποθηκεύστε τους εντοπιστές σε μια κλάση Μοντέλου Αντικειμένου Σελίδας (POM), ώστε οι ενημερώσεις να μπορούν να γίνονται σε ένα μέρος και όχι σε πολλά σενάρια δοκιμών.
- Επικύρωση στα Εργαλεία Προγραμματιστή: Πριν προσθέσετε έναν εντοπιστή σε ένα σενάριο, δοκιμάστε τον στην κονσόλα του προγράμματος περιήγησης χρησιμοποιώντας $x(“//xpath”) για XPath ή document.querySelector για CSS για να επιβεβαιώσετε ότι επιστρέφει ακριβώς ένα στοιχείο.
- Αποφύγετε τους εντοπιστές που βασίζονται σε ευρετήρια, όταν είναι δυνατόν: Οι θέσεις των ευρετηρίων όπως [3] εξαρτώνται από τη σειρά των στοιχείων. Ακόμα και μικρές αλλαγές στη διάταξη μπορούν να μετατοπίσουν το ευρετήριο και να προκαλέσουν βλάβη στο σενάριο.
Εφαρμόζοντας αυτές τις πρακτικές με συνέπεια, οι μηχανικοί αυτοματισμού δημιουργούν σουίτες δοκιμών που κλιμακώνονται σε όλες τις ομάδες και αντέχουν στις συχνές ενημερώσεις του UI με ελάχιστη συντήρηση.





























