Εντοπιστές σε Selenium

⚡ Έξυπνη Σύνοψη

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

  • 🎓 FoundationΑρχή: Χρησιμοποιήστε πρώτα τους εντοπιστές αναγνωριστικών (ID locators) επειδή είναι μοναδικοί και παρέχουν την ταχύτερη και πιο σταθερή αναγνώριση στοιχείων.
  • 🚀 Εστίαση στην Υλοποίηση: Εφαρμογή εντοπιστών ονομάτων με χαρακτηριστικά φίλτρου για τη διαφοροποίηση στοιχείων που μοιράζονται πανομοιότυπες τιμές ονόματος, όπως κουμπιά επιλογής.
  • 💡 Προηγμένη Τεχνική: Αξιοποιήστε μεθόδους DOM όπως getElementById, getElementsByName και ευρετηρίαση φορμών για πρόσβαση σε βαθιά ένθετα στοιχεία.
  • 🍀 Στρατηγική Βελτιστοποίησης: Επιλέξτε XPath για στοιχεία που δεν έχουν χαρακτηριστικά κλάσης, ονόματος ή αναγνωριστικού, αλλά εξισορροπήστε την ευελιξία με την επιβάρυνση συντήρησης σεναρίων.
  • 👜 Επίδραση στην ποιότητα: Η επιλογή του σωστού τύπου εντοπιστή επηρεάζει άμεσα την αξιοπιστία του σεναρίου, την ταχύτητα εκτέλεσης και τη μακροπρόθεσμη συντήρηση των δοκιμών.

Εντοπισμός με βάση την ταυτότητα στο Selenium

Σε τι χρησιμεύουν οι εντοπιστές; 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».

Εντοπισμός με βάση την ταυτότητα στο Selenium

Βήμα 2) Εκκίνηση Selenium IDE και πληκτρολογήστε "id=email" στο Target πλαίσιο. Κάντε κλικ στο κουμπί Εύρεση και παρατηρήστε ότι το πλαίσιο κειμένου "Email ή Τηλέφωνο" επισημαίνεται με κίτρινο χρώμα με πράσινο περίγραμμα, υποδεικνύοντας ότι Selenium Το IDE έχει εντοπίσει σωστά το στοιχείο.

Εντοπισμός μέσω επαλήθευσης ταυτότητας

Εντοπισμός με Όνομα

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

Target Μορφή: όνομα=όνομα του στοιχείου

Για την επόμενη επίδειξη, θα χρησιμοποιήσουμε Mercury Περιηγήσεις επειδή όλα τα σημαντικά στοιχεία φόρμας στον ιστότοπο φέρουν ένα χαρακτηριστικό ονόματος.

Βήμα 1) Πλοηγηθείτε στο https://demo.guru99.com/test/newtours/ και χρησιμοποιήστε τα Εργαλεία Προγραμματιστή του προγράμματος περιήγησης για να ελέγξετε το πλαίσιο κειμένου "Όνομα Χρήστη". Σημειώστε το χαρακτηριστικό name.

Εντοπισμός με βάση το όνομα στο Selenium

Εδώ, το όνομα του στοιχείου είναι "όνομα χρήστη".

Βήμα 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” χρησιμεύει ως φίλτρο μας.

Κάντε κλικ στην εντολή Command με φίλτρο

Βήμα 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=".

Σύνδεσμος κειμένου σε Target

Βήμα 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Πλοηγηθείτε σε αυτό και χρησιμοποιήστε τα Εργαλεία προγραμματιστή για να ελέγξετε το πλαίσιο ελέγχου "Να διατηρηθώ συνδεδεμένος". Σημειώστε το αναγνωριστικό του.

Επιθεώρηση getElementById

Το αναγνωριστικό που πρέπει να χρησιμοποιήσουμε είναι το "persist_box".

Βήμα 2) Ανοικτό Selenium IDE και στο Target πληκτρολογήστε document.getElementById(“persist_box”) και, στη συνέχεια, κάντε κλικ στην επιλογή Εύρεση. Selenium Το IDE θα εντοπίσει το πλαίσιο ελέγχου "Να παραμείνω συνδεδεμένος". Παρόλο που δεν μπορεί να επισημάνει το εσωτερικό του πλαισίου ελέγχου, περιβάλλει το στοιχείο με ένα φωτεινό πράσινο περίγραμμα, όπως φαίνεται παρακάτω.

Επαλήθευση getElementById

Εντοπισμός κατά DOM – getElementsByName

Η μέθοδος getElementById έχει πρόσβαση μόνο σε ένα στοιχείο κάθε φορά, δηλαδή στο στοιχείο με το καθορισμένο ID. Η μέθοδος getElementsByName συμπεριφέρεται διαφορετικά. Επιστρέφει έναν πίνακα στοιχείων που μοιράζονται το καθορισμένο όνομα. Η πρόσβαση σε μεμονωμένα στοιχεία γίνεται χρησιμοποιώντας έναν αριθμητικό δείκτη που ξεκινά από το 0.

Εικονογράφηση getElementById getElementById
Επιστρέφει μόνο ένα στοιχείο. Αυτό το στοιχείο φέρει το ID που καθορίζεται μέσα στις παρενθέσεις της συνάρτησης getElementById().
Εικονογράφηση getElementsByName getElementsByName
Επιστρέφει μια συλλογή στοιχείων των οποίων τα ονόματα είναι πανομοιότυπα. Κάθε στοιχείο καταχωρείται με έναν αριθμό που ξεκινά από το 0, όπως ένας πίνακας. Επιλέγετε ένα συγκεκριμένο στοιχείο τοποθετώντας τον δείκτη του μέσα στις αγκύλες στη σύνταξη παρακάτω.

Σύνταξη

document.getElementsByName("name")[index]

  • name = όνομα του στοιχείου όπως ορίζεται από το χαρακτηριστικό 'όνομα' του
  • index = ένας ακέραιος αριθμός που υποδεικνύει ποιο στοιχείο εντός του πίνακα του getElementsByName θα χρησιμοποιηθεί.

Βήμα 1) Πλοηγηθείτε με το Mercury Μεταβείτε στην αρχική σελίδα της εκδρομής και συνδεθείτε χρησιμοποιώντας το "tutorial" ως όνομα χρήστη και κωδικό πρόσβασης. Το πρόγραμμα περιήγησης θα φορτώσει την οθόνη Flight Finder.

Βήμα 2) Χρησιμοποιήστε τα Εργαλεία Προγραμματιστή για να ελέγξετε τα τρία κουμπιά επιλογής στο κάτω μέρος της σελίδας (Οικονομική θέση, Διακεκριμένη θέση και Πρώτη θέση). Παρατηρήστε ότι όλα έχουν το ίδιο όνομα, "servClass".

Επιθεώρηση getElementsByName

Βήμα 3) Αρχικά, ας αποκτήσουμε πρόσβαση στο κουμπί επιλογής «Οικονομική θέση». Από τα τρία κουμπιά επιλογής, αυτό το στοιχείο εμφανίζεται πρώτο, επομένως ο δείκτης του είναι 0. Selenium IDE, πληκτρολογήστε document.getElementsByName(“servClass”)[0] και κάντε κλικ στο κουμπί Εύρεση. Selenium Το IDE θα αναγνωρίσει σωστά το κουμπί επιλογής Οικονομικής θέσης.

Βρίσκεται στην Οικονομική Θέση

Βήμα 4) Αλλάξτε τον αριθμό ευρετηρίου σε 1, έτσι ώστε το δικό σας Target γίνεται document.getElementsByName(“servClass”)[1]. Κάντε κλικ στο κουμπί Εύρεση και Selenium Το IDE θα επισημάνει το κουμπί επιλογής «Business class» όπως φαίνεται παρακάτω.

Βρίσκεται στην 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".

Επιθεώρηση dom:name

Βήμα 2) In Selenium IDE, πληκτρολογήστε document.forms[“home”].elements[“userName”] και κάντε κλικ στο κουμπί Εύρεση. Selenium Το IDE θα έχει πρόσβαση στο στοιχείο με επιτυχία.

Επαλήθευση dom:name

Εντοπισμός κατά DOM – dom:index

Αυτή η μέθοδος εφαρμόζεται ακόμα και όταν το στοιχείο δεν βρίσκεται μέσα σε μια ονομασμένη φόρμα, επειδή χρησιμοποιεί το ευρετήριο της φόρμας αντί για το όνομά της. Αυτό είναι χρήσιμο για παλαιότερες σελίδες ή αυτόματα δημιουργημένες φόρμες όπου η ονομασία δεν είναι διαθέσιμη.

Σύνταξη

document.forms[index of the form].elements[index of the element]

  • δείκτης της φόρμας = ο αριθμός ευρετηρίου (ξεκινώντας από το 0) της φόρμας σε σχέση με ολόκληρη τη σελίδα
  • δείκτης του στοιχείου = ο αριθμός δείκτη (ξεκινώντας από το 0) του στοιχείου σε σχέση με τη μορφή που το περιέχει

Θα έχουμε πρόσβαση στο πλαίσιο κειμένου «Τηλέφωνο» στο Mercury Σελίδα εγγραφής σε εκδρομές. Η φόρμα σε αυτήν τη σελίδα δεν έχει ούτε όνομα ούτε χαρακτηριστικό αναγνωριστικού, επομένως αποτελεί καλό παράδειγμα.

Βήμα 1) Πλοηγηθείτε με το Mercury Στη σελίδα Εγγραφής Περιηγήσεων και ελέγξτε το πλαίσιο κειμένου Τηλέφωνο. Παρατηρήστε ότι η γύρω φόρμα δεν έχει ούτε χαρακτηριστικά Αναγνωριστικού ούτε ονόματος.

dom:index Επιθεώρηση

Βήμα 2) Εισαγάγετε document.forms[0].elements[3] στο Selenium IDE Target πλαίσιο και κάντε κλικ στο κουμπί Εύρεση. Selenium Το IDE θα έχει σωστή πρόσβαση στο πλαίσιο κειμένου "Τηλέφωνο".

Επαλήθευση dom:index

Βήμα 3) Εναλλακτικά, μπορείτε να χρησιμοποιήσετε το όνομα του στοιχείου αντί για τον δείκτη του για το ίδιο αποτέλεσμα. Πληκτρολογήστε document.forms[0].elements[“phone”] στο Target Το πλαίσιο κειμένου Τηλέφωνο θα εξακολουθεί να είναι επισημασμένο.

dom:index κατά όνομα

Εντοπισμός από το XPath

Το XPath είναι η γλώσσα ερωτημάτων που χρησιμοποιείται για την πλοήγηση σε κόμβους XML (Extensible Markup Language). Επειδή η HTML μπορεί να θεωρηθεί ως υλοποίηση της XML, XPath μπορεί επίσης να εντοπίσει στοιχεία HTML. Είναι μια από τις πιο ισχυρές στρατηγικές εντοπισμού στο Selenium.

  • Πλεονέκτημα: Μπορεί να έχει πρόσβαση σχεδόν σε οποιοδήποτε στοιχείο, συμπεριλαμβανομένων εκείνων χωρίς χαρακτηριστικά κλάσης, ονόματος ή αναγνωριστικού.
  • Μειονέκτημα: Είναι η πιο σύνθετη στρατηγική εντοπισμού λόγω των πολλών κανόνων και των παραλλαγών σύνταξης που διαθέτει.

Τα σύγχρονα εργαλεία προγραμματιστών προγραμμάτων περιήγησης μπορούν να δημιουργήσουν αυτόματα εκφράσεις XPath. Στο Chrome, Edge ή Firefox, κάντε δεξί κλικ σε ένα στοιχείο στον πίνακα Στοιχεία και επιλέξτε Αντιγραφή > Αντιγραφή XPath. Στο ακόλουθο παράδειγμα, θα έχουμε πρόσβαση σε μια εικόνα που δεν μπορεί να εντοπιστεί χρησιμοποιώντας τις μεθόδους που συζητήθηκαν προηγουμένως.

Βήμα 1) Πλοηγηθείτε με το Mercury Μεταβείτε στην αρχική σελίδα περιήγησης και χρησιμοποιήστε τα Εργαλεία προγραμματιστή για να ελέγξετε το πορτοκαλί ορθογώνιο στα δεξιά του κίτρινου πλαισίου "Σύνδεσμοι", όπως φαίνεται παρακάτω.

Επιθεώρηση Στοιχείων XPath

Βήμα 2) Κάντε δεξί κλικ στον κώδικα HTML του στοιχείου και, στη συνέχεια, επιλέξτε την επιλογή "Αντιγραφή XPath".

Αντιγραφή επιλογής XPath

Βήμα 3) In Selenium IDE, πληκτρολογήστε μια μοναδική κάθετο "/" στο Target και, στη συνέχεια, επικολλήστε το XPath που αντιγράψατε στο προηγούμενο βήμα. Η είσοδος στο Target Το πλαίσιο πρέπει τώρα να ξεκινά με δύο κάθετες προς τα εμπρός "//".

XPath επικολλήθηκε

Βήμα 4) Κάντε κλικ στο κουμπί Εύρεση. Selenium Το IDE θα επισημάνει το πορτοκαλί πλαίσιο, όπως φαίνεται παρακάτω.

Επαλήθευση XPath

Γιατί έχει σημασία η επιλογή του σωστού εντοπιστή

Η επιλογή της σωστής στρατηγικής εντοπισμού είναι μια από τις πιο σημαντικές αποφάσεις Selenium αυτοματοποίηση επειδή επηρεάζει άμεσα τη σταθερότητα του σεναρίου, την ταχύτητα εκτέλεσης και το μακροπρόθεσμο κόστος συντήρησης. Ένας κακώς επιλεγμένος εντοπιστής μπορεί να προκαλέσει ασταθείς δοκιμές, ψευδείς αποτυχίες και συχνή επανεπεξεργασία κάθε φορά που αλλάζει το περιβάλλον χρήστη της εφαρμογής. Η σειρά προτίμησης που συνιστούν οι έμπειροι μηχανικοί αυτοματισμού είναι πρώτα το ID, στη συνέχεια το Name, ακολουθούμενο από το CSS Selector, το Link Text και τέλος το XPath.

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

Ο σταθερός αυτοματισμός εξαρτάται επίσης από τη συνεργασία με τους προγραμματιστές. Όταν οι δοκιμαστές ζητούν συνεπή και ουσιαστικά χαρακτηριστικά ID ή data-* κατά τη διάρκεια των κριτικών κώδικα, η ανθεκτικότητα του εντοπιστή βελτιώνεται σημαντικά. Αποφύγετε να βασίζεστε σε αυτόματα δημιουργούμενα ID (όπως αυτά που παράγονται από frameworks), επειδή ενδέχεται να αλλάζουν μεταξύ των builds. Δίνοντας προτεραιότητα σε ευανάγνωστους, καθοδηγούμενους από την πρόθεση εντοπιστές, οι ομάδες μπορούν να διατηρήσουν τις σουίτες δοκιμών συντηρήσιμες και να μειώσουν το τεχνικό χρέος καθώς η εφαρμογή εξελίσσεται.

καλυτερα Practices for Writing Reliable Locators

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

  1. Προτιμώνται μοναδικά αναγνωριστικά: Να ελέγχετε πάντα πρώτα για ένα χαρακτηριστικό αναγνωριστικού. Τα αναγνωριστικά προορίζονται να είναι μοναδικά μέσα σε μια σελίδα και αποτελούν την πιο αποδοτική επιλογή.
  2. Χρησιμοποιήστε σημασιολογικά χαρακτηριστικά Name και data-*: Ενθαρρύνετε τους προγραμματιστές να προσθέσουν σταθερά χαρακτηριστικά δοκιμής, όπως data-testid ή data-qa. Αυτά παραμένουν συνεπή ακόμα και όταν αλλάζουν οι κλάσεις CSS.
  3. Αποφύγετε την απόλυτη XPath: Απόλυτες διαδρομές όπως /html/body/div[2]/div[3]/span διακόπτονται εύκολα. Χρησιμοποιήστε σχετικές εκφράσεις XPath με χαρακτηριστικά όπως //input[@name='userName'].
  4. Συνδυάστε χαρακτηριστικά για ακρίβεια: Όταν ένα μεμονωμένο χαρακτηριστικό δεν είναι μοναδικό, συνδυάστε πολλά χαρακτηριστικά (για παράδειγμα, //button[@type='submit' και @name='login']) για να στοχεύσετε το σωστό στοιχείο.
  5. Χρησιμοποιήστε το κείμενο με σύνεση: Οι εντοπιστές που εξαρτώνται από ορατό κείμενο ενδέχεται να μην είναι διαθέσιμοι σε διάφορες γλώσσες. Χρησιμοποιήστε εντοπιστές που βασίζονται σε κείμενο μόνο όταν το περιεχόμενο είναι σταθερό και μονογλωσσικό.
  6. Κεντρικοποίηση εντοπιστών: Αποθηκεύστε τους εντοπιστές σε μια κλάση Μοντέλου Αντικειμένου Σελίδας (POM), ώστε οι ενημερώσεις να μπορούν να γίνονται σε ένα μέρος και όχι σε πολλά σενάρια δοκιμών.
  7. Επικύρωση στα Εργαλεία Προγραμματιστή: Πριν προσθέσετε έναν εντοπιστή σε ένα σενάριο, δοκιμάστε τον στην κονσόλα του προγράμματος περιήγησης χρησιμοποιώντας $x(“//xpath”) για XPath ή document.querySelector για CSS για να επιβεβαιώσετε ότι επιστρέφει ακριβώς ένα στοιχείο.
  8. Αποφύγετε τους εντοπιστές που βασίζονται σε ευρετήρια, όταν είναι δυνατόν: Οι θέσεις των ευρετηρίων όπως [3] εξαρτώνται από τη σειρά των στοιχείων. Ακόμα και μικρές αλλαγές στη διάταξη μπορούν να μετατοπίσουν το ευρετήριο και να προκαλέσουν βλάβη στο σενάριο.

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

Συχνές Ερωτήσεις

Ο εντοπιστής αναγνωριστικών είναι ο ταχύτερος επειδή τα προγράμματα περιήγησης βελτιστοποιούν τις αναζητήσεις για μοναδικά αναγνωριστικά. Όταν τα αναγνωριστικά δεν είναι διαθέσιμα, το Name και το CSS Selector είναι συνήθως ταχύτερα από το XPath, το οποίο διασχίζει το DOM πιο εκτενώς κατά την ανάλυση στοιχείων.

Το Absolute XPath ξεκινά από τη ρίζα του εγγράφου HTML και ακολουθεί μια πλήρη διαδρομή, καθιστώντας το εύθραυστο. Το Relative XPath ξεκινά οπουδήποτε στο DOM χρησιμοποιώντας χαρακτηριστικά όπως //input[@id='email'], προσφέροντας πιο σταθερή και συντηρήσιμη στόχευση στοιχείων.

Το Firebug καταργήθηκε το 2017. Τα σύγχρονα προγράμματα περιήγησης περιλαμβάνουν ενσωματωμένα Εργαλεία για προγραμματιστές, στα οποία έχετε πρόσβαση μέσω F12 σε Chrome, Edge και FirefoxΑυτά τα εργαλεία παρέχουν έλεγχο στοιχείων, αντιγραφή XPath, επιλογέα αντιγραφής CSS και δοκιμές κονσόλας για επικύρωση εντοπιστή.

Ναι. Εργαλεία με τεχνητή νοημοσύνη, όπως π.χ. Testim, Mabl και Functionize αναλύουν το DOM και δημιουργούν αυτοεπιδιορθούμενους εντοπιστές. Αυτές οι πλατφόρμες χρησιμοποιούν μηχανική μάθηση για να προσαρμόζουν αυτόματα τους εντοπιστές όταν αλλάζει το περιβάλλον χρήστη, μειώνοντας τη συντήρηση και τις ασταθείς αποτυχίες δοκιμών.

Οι μηχανές αυτο-επιδιόρθωσης που βασίζονται στην τεχνητή νοημοσύνη μαθαίνουν τα χαρακτηριστικά, τη θέση και το περιβάλλον DOM που περιβάλλουν κάθε στοιχείο. Όταν ο αρχικός εντοπιστής αποτύχει, η μηχανή επιλέγει την πλησιέστερη αντιστοιχία χρησιμοποιώντας βαθμολογίες πιθανότητας, επιτρέποντας στα σενάρια δοκιμών να συνεχίσουν να εκτελούνται χωρίς χειροκίνητη παρέμβαση.

Συνοψίστε αυτήν την ανάρτηση με: