Εντοπιστές σε Selenium
Τι είναι οι Locators;
Ο εντοπιστής είναι μια εντολή που λέει Selenium Αναγνωρίστε ποια στοιχεία GUI ( πείτε Κείμενο Box, Κουμπιά, Έλεγχος Boxes κλπ) τις ανάγκες του για λειτουργία. Η αναγνώριση των σωστών στοιχείων GUI είναι απαραίτητη προϋπόθεση για τη δημιουργία ενός σεναρίου αυτοματισμού. Αλλά η ακριβής αναγνώριση των στοιχείων GUI είναι πιο δύσκολη από όσο ακούγεται. Μερικές φορές, καταλήγετε να εργάζεστε με λανθασμένα στοιχεία GUI ή καθόλου στοιχεία! Οθεν, Selenium παρέχει έναν αριθμό Locators για τον ακριβή εντοπισμό ενός στοιχείου GUI
Υπάρχουν εντολές που δεν χρειάζονται εντοπιστή (όπως η εντολή «open»). Ωστόσο, οι περισσότεροι από αυτούς χρειάζονται στοιχεία εντοπισμού στοιχείων Selenium webdriver.
Η επιλογή του εντοπιστή εξαρτάται σε μεγάλο βαθμό από την εφαρμογή σας υπό δοκιμή. Σε αυτό το σεμινάριο, θα κάνουμε εναλλαγή μεταξύ του Facebook, νέων tours.demoaut με βάση τους εντοπιστές που υποστηρίζουν αυτές οι εφαρμογές. Το ίδιο και στο δικό σου Δοκιμές έργο, θα επιλέξετε οποιονδήποτε από τους παραπάνω αναφερόμενους εντοπιστές στοιχείων Selenium webdriver, με βάση την υποστήριξη της εφαρμογής σας.
Εντοπισμός με ταυτότητα
Αυτός είναι ο πιο συνηθισμένος τρόπος εντοπισμού στοιχείων αφού τα ID υποτίθεται ότι είναι μοναδικά για κάθε στοιχείο.
Target Μορφή: id=id του στοιχείου
Για αυτό το παράδειγμα, θα χρησιμοποιήσουμε το Facebook ως δοκιμαστική εφαρμογή μας επειδή Mercury Οι περιηγήσεις δεν χρησιμοποιούν χαρακτηριστικά αναγνωριστικού.
Βήμα 1) Από τότε που δημιουργήθηκε αυτό το σεμινάριο, το Facebook άλλαξε τη Σχεδίαση Σελίδας Σύνδεσης. Χρησιμοποιήστε αυτήν τη σελίδα επίδειξης http://demo.guru99.com/test/facebook.html
για δοκιμή. Επιθεωρήστε το πλαίσιο κειμένου «Ηλεκτρονικό ταχυδρομείο ή τηλέφωνο» χρησιμοποιώντας το Firebug και σημειώστε το αναγνωριστικό του. Σε αυτήν την περίπτωση, το αναγνωριστικό είναι "email".
Βήμα 2) Εκκίνηση Selenium IDE και πληκτρολογήστε "id=email" στο Target κουτί. Κάντε κλικ στο κουμπί Εύρεση και παρατηρήστε ότι το πλαίσιο κειμένου "Ηλεκτρονικό ταχυδρομείο ή τηλέφωνο" επισημαίνεται με κίτρινο και περικλείεται με πράσινο, που σημαίνει Selenium Το IDE μπόρεσε να εντοπίσει σωστά αυτό το στοιχείο.
Εντοπισμός με Όνομα
Ο εντοπισμός στοιχείων κατά όνομα είναι πολύ παρόμοιος με τον εντοπισμό με αναγνωριστικό, με τη διαφορά ότι χρησιμοποιούμε το "όνομα =" πρόθεμα αντί.
Target Μορφή: όνομα=όνομα του στοιχείου
Στην επόμενη επίδειξη, θα χρησιμοποιήσουμε τώρα Mercury Περιηγήσεις γιατί όλα τα σημαντικά στοιχεία έχουν ονόματα.
Βήμα 1) Πλοηγηθείτε στο http://demo.guru99.com/test/newtours/
και χρησιμοποιήστε το Firebug για να επιθεωρήσετε το πλαίσιο κειμένου "Όνομα χρήστη". Σημειώστε το χαρακτηριστικό του ονόματός του.
Εδώ, βλέπουμε ότι το όνομα του στοιχείου είναι "userName".
Βήμα 2) In Selenium IDE, πληκτρολογήστε "όνομα=όνομα χρήστη" στο Target πλαίσιο και κάντε κλικ στο κουμπί Εύρεση. Selenium Το IDE θα πρέπει να μπορεί να εντοπίσει το πλαίσιο κειμένου Όνομα χρήστη επισημαίνοντάς το.
Πώς να εντοπίσετε το στοιχείο κατά όνομα χρησιμοποιώντας φίλτρα
Τα φίλτρα μπορούν να χρησιμοποιηθούν όταν πολλά στοιχεία έχουν το ίδιο όνομα. Τα φίλτρα είναι πρόσθετα χαρακτηριστικά που χρησιμοποιούνται για τη διάκριση στοιχείων με το ίδιο όνομα.
Target Μορφή: name=name_of_the_element filter=value_of_filter
Ας δούμε ένα παράδειγμα -
Βήμα 1) Συνδεθείτε στο Mercury Περιηγήσεις.
Συνδεθείτε στο Mercury Περιηγήσεις που χρησιμοποιούν το "tutorial" ως όνομα χρήστη και κωδικό πρόσβασης. Θα πρέπει να σας μεταφέρει στη σελίδα Flight Finder που εμφανίζεται παρακάτω.
Βήμα 2) Χρησιμοποιώντας το firebug χρησιμοποιήστε VALUE χαρακτηριστικά.
Χρησιμοποιώντας το Firebug, παρατηρήστε ότι τα κουμπιά επιλογής 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) Επιλέξτε το κουμπί επιλογής One Way.
Πατήστε το πλήκτρο «X» στο πληκτρολόγιό σας για να εκτελέσετε αυτήν την εντολή κλικ. Παρατηρήστε ότι το κουμπί επιλογής One Way επιλέχθηκε.
Μπορείτε να κάνετε ακριβώς το ίδιο πράγμα με το κουμπί επιλογής Round Trip, αυτή τη φορά, χρησιμοποιώντας ως στόχο το "name=tripType value=roundtrip".
Εντοπισμός μέσω κειμένου συνδέσμου
Αυτός ο τύπος εντοπισμού CSS σε Selenium ισχύει μόνο για κείμενα υπερσυνδέσμων. Έχουμε πρόσβαση στον σύνδεσμο θέτοντας το πρόθεμα του στόχου μας με "link=" και στη συνέχεια ακολουθείται από το κείμενο υπερσύνδεσης.
Target Μορφή: link=link_text
Σε αυτό το παράδειγμα, θα έχουμε πρόσβαση στον σύνδεσμο «ΕΓΓΡΑΦΗ» που βρίσκεται στο Mercury Αρχική σελίδα περιηγήσεων.
Βήμα 1)
- Πρώτα, βεβαιωθείτε ότι έχετε αποσυνδεθεί από Mercury Περιηγήσεις.
- Πηγαίνετε στο Mercury Αρχική σελίδα περιηγήσεων.
Βήμα 2)
- Χρησιμοποιώντας το Firebug, επιθεωρήστε τον σύνδεσμο «ΕΓΓΡΑΦΗ». Το κείμενο του συνδέσμου βρίσκεται ανάμεσα στις ετικέτες και.
- Σε αυτήν την περίπτωση, το κείμενο του συνδέσμου μας είναι "ΕΓΓΡΑΦΗ". Αντιγράψτε το κείμενο του συνδέσμου.
Βήμα 3) Αντιγράψτε το κείμενο του συνδέσμου στο Firebug και επικολλήστε το Selenium Μασών του μηνός Target κουτί. Τοποθετήστε το πρόθεμα με "link=".
Βήμα 4) Κάντε κλικ στο κουμπί Εύρεση και παρατηρήστε ότι Selenium Το IDE μπόρεσε να επισημάνει σωστά τον σύνδεσμο ΕΓΓΡΑΦΗ.
Βήμα 5) Για περαιτέρω επαλήθευση, πληκτρολογήστε "clickAndWait" στο πλαίσιο Command και εκτελέστε το. Selenium Το IDE θα πρέπει να μπορεί να κάνει κλικ σε αυτόν τον σύνδεσμο ΕΓΓΡΑΦΗ με επιτυχία και να σας μεταφέρει στη σελίδα Εγγραφή που εμφανίζεται παρακάτω.
Εντοπισμός κατά DOM (Μοντέλο αντικειμένου εγγράφου)
Τα Διαχωριστικά Μοντέλο αντικειμένου εγγράφου (DOM), με απλά λόγια, είναι ο τρόπος με τον οποίο δομούνται τα στοιχεία HTML. Selenium Το IDE μπορεί να χρησιμοποιήσει το DOM για την πρόσβαση σε στοιχεία σελίδας. Αν χρησιμοποιήσουμε αυτή τη μέθοδο, μας Target Το πλαίσιο θα ξεκινά πάντα με "dom=document..."; Ωστόσο, το πρόθεμα “dom=” συνήθως αφαιρείται επειδή Selenium Το IDE μπορεί να ερμηνεύσει αυτόματα οτιδήποτε ξεκινά με τη λέξη-κλειδί "document" ως διαδρομή εντός του DOM στο Selenium ΤΕΛΟΣ παντων.
Υπάρχουν τέσσερις βασικοί τρόποι για να εντοπίσετε ένα στοιχείο μέσω του DOM in Selenium:
- getElementById
- getElementsByName
- dom:name (ισχύει μόνο για στοιχεία σε μια ονομαστική φόρμα)
- dom:index
Εντοπισμός κατά DOM – getElementById
Ας επικεντρωθούμε στην πρώτη μέθοδο – χρησιμοποιώντας τη μέθοδο getElementById του DOM in Selenium. Η σύνταξη θα ήταν:
Σύνταξη
document.getElementById("id of the element")
- id του στοιχείου = αυτή είναι η τιμή του χαρακτηριστικού ID του στοιχείου προς πρόσβαση. Αυτή η τιμή πρέπει πάντα να περικλείεται σε ένα ζευγάρι παρενθέσεων (“”).
Βήμα 1) Χρησιμοποιήστε αυτήν τη σελίδα επίδειξης http://demo.guru99.com/test/facebook.html
Πλοηγηθείτε σε αυτό και χρησιμοποιήστε το Firebug για να επιθεωρήσετε το πλαίσιο ελέγχου "Κρατήστε με συνδεδεμένο". Σημειώστε την ταυτότητά του.
Μπορούμε να δούμε ότι το αναγνωριστικό που πρέπει να χρησιμοποιήσουμε είναι το "persist_box".
Βήμα 2) Ανοικτό Selenium IDE και στο Target στο πλαίσιο, πληκτρολογήστε "document.getElementById("persist_box")" και κάντε κλικ στην Εύρεση. Selenium Το IDE θα πρέπει να μπορεί να εντοπίσει το πλαίσιο ελέγχου "Κρατήστε με συνδεδεμένο". Αν και δεν μπορεί να επισημάνει το εσωτερικό του πλαισίου ελέγχου, Selenium Το IDE μπορεί ακόμα να περιβάλλει το στοιχείο με ένα φωτεινό πράσινο περίγραμμα όπως φαίνεται παρακάτω.
Εντοπισμός κατά DOM – getElementsByName
Η μέθοδος getElementById μπορεί να έχει πρόσβαση μόνο σε ένα στοιχείο κάθε φορά, και αυτό είναι το στοιχείο με το αναγνωριστικό που καθορίσατε. Η μέθοδος getElementsByName είναι διαφορετική. Συλλέγει έναν πίνακα στοιχείων που έχουν το όνομα που ορίσατε. Μπορείτε να αποκτήσετε πρόσβαση στα μεμονωμένα στοιχεία χρησιμοποιώντας ένα ευρετήριο που ξεκινά από το 0.
getElementById
|
|
getElementsByName
|
Σύνταξη
document.getElementsByName(“name“)[index]
- name = όνομα του στοιχείου όπως ορίζεται από το χαρακτηριστικό 'όνομα' του
- index = ένας ακέραιος αριθμός που υποδεικνύει ποιο στοιχείο εντός του πίνακα του getElementsByName θα χρησιμοποιηθεί.
Βήμα 1) Πλοηγηθείτε στο Mercury Αρχική σελίδα του Tours και συνδεθείτε χρησιμοποιώντας το "tutorial" ως όνομα χρήστη και κωδικό πρόσβασης. Firefox θα πρέπει να σας μεταφέρει στην οθόνη του Flight Finder.
Βήμα 2) Χρησιμοποιώντας το Firebug, επιθεωρήστε τα τρία κουμπιά επιλογής στο κάτω μέρος της σελίδας (κουμπιά επιλογής Economy class, Business class και First class). Παρατηρήστε ότι όλα έχουν το ίδιο όνομα που είναι "servClass".
Βήμα 3) Ας αποκτήσουμε πρώτα πρόσβαση στο κουμπί επιλογής "Economy class". Από όλα αυτά τα τρία κουμπιά επιλογής, αυτό το στοιχείο έρχεται πρώτο, επομένως έχει δείκτη 0. In Selenium IDE, πληκτρολογήστε “document.getElementsByName(“servClass”)[0]” και κάντε κλικ στο κουμπί Εύρεση. Selenium Το IDE θα πρέπει να μπορεί να αναγνωρίζει σωστά το κουμπί επιλογής Economy class.
Βήμα 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 Αρχική σελίδα περιηγήσεων http://demo.guru99.com/test/newtours/
και χρησιμοποιήστε το Firebug για να επιθεωρήσετε το πλαίσιο κειμένου Όνομα χρήστη. Σημειώστε ότι περιέχεται σε μια φόρμα που ονομάζεται "σπίτι".
Βήμα 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]
- index of the form = ο αριθμός ευρετηρίου (ξεκινώντας από το 0) της φόρμας σε σχέση με ολόκληρη τη σελίδα
- δείκτης του στοιχείου = ο αριθμός ευρετηρίου (που ξεκινά από το 0) του στοιχείου σε σχέση με ολόκληρη τη φόρμα που το περιέχει
Θα έχουμε πρόσβαση στο πλαίσιο κειμένου «Τηλέφωνο» μέσα Mercury Σελίδα εγγραφής εκδρομών. Η φόρμα σε αυτήν τη σελίδα δεν έχει όνομα και χαρακτηριστικό αναγνωριστικό, επομένως αυτό θα αποτελέσει ένα καλό παράδειγμα.
Βήμα 1) Πλοηγηθείτε στο Mercury Σελίδα Εγγραφής περιηγήσεων και επιθεωρήστε το πλαίσιο κειμένου Τηλέφωνο. Σημειώστε ότι η φόρμα που την περιέχει δεν έχει χαρακτηριστικά αναγνωριστικού και ονόματος.
Βήμα 2) Εισαγάγετε "document.forms[0].elements[3]" στο Selenium Μασών του μηνός Target πλαίσιο και κάντε κλικ στο κουμπί Εύρεση. Selenium Το IDE θα πρέπει να έχει τη σωστή πρόσβαση στο πλαίσιο κειμένου του τηλεφώνου.
Βήμα 3) Εναλλακτικά, μπορείτε να χρησιμοποιήσετε το όνομα του στοιχείου αντί για το ευρετήριό του και να λάβετε το ίδιο αποτέλεσμα. Εισαγάγετε "document.forms[0].elements["phone"]". Selenium Μασών του μηνός Target κουτί. Το πλαίσιο κειμένου Τηλέφωνο θα πρέπει να είναι ακόμα επισημασμένο.
Εντοπισμός από το XPath
Το XPath είναι η γλώσσα που χρησιμοποιείται κατά τον εντοπισμό κόμβων XML (Extensible Markup Language). Δεδομένου ότι η HTML μπορεί να θεωρηθεί ως υλοποίηση της XML, μπορούμε επίσης να τη χρησιμοποιήσουμε XPath στον εντοπισμό στοιχείων HTML.
- Πλεονέκτημα: Μπορεί να έχει πρόσβαση σχεδόν σε οποιοδήποτε στοιχείο, ακόμη και σε αυτά που δεν διαθέτουν χαρακτηριστικά κλάσης, ονόματος ή αναγνωριστικού.
- Μειονέκτημα: Είναι η πιο περίπλοκη μέθοδος αναγνώρισης στοιχείων λόγω πάρα πολλών διαφορετικών κανόνων και εκτιμήσεων.
Ευτυχώς, το Firebug μπορεί να δημιουργήσει αυτόματα XPath Selenium εντοπιστές. Στο παρακάτω παράδειγμα, θα έχουμε πρόσβαση σε μια εικόνα στην οποία δεν είναι δυνατή η πρόσβαση μέσω των μεθόδων που συζητήσαμε προηγουμένως.
Βήμα 1) Πλοηγηθείτε στο Mercury Αρχική σελίδα περιηγήσεων και χρησιμοποιήστε το Firebug για να επιθεωρήσετε το πορτοκαλί ορθογώνιο στα δεξιά του κίτρινου πλαισίου "Σύνδεσμοι". Ανατρέξτε στην παρακάτω εικόνα.
Βήμα 2) Κάντε δεξί κλικ στον κώδικα HTML του στοιχείου και, στη συνέχεια, επιλέξτε την επιλογή «Αντιγραφή XPath».
Βήμα 3) In Selenium IDE, πληκτρολογήστε μία κάθετο προς τα εμπρός "/" στο Target πλαίσιο και, στη συνέχεια, επικολλήστε το XPath που αντιγράψαμε στο προηγούμενο βήμα. Η καταχώρηση στο δικό σας Target Το πλαίσιο πρέπει τώρα να ξεκινά με δύο κάθετες προς τα εμπρός "//".
Βήμα 4) Κάντε κλικ στο κουμπί Εύρεση. Selenium Το IDE θα πρέπει να μπορεί να επισημάνει το πορτοκαλί πλαίσιο όπως φαίνεται παρακάτω.
Σύνοψη
Σύνταξη για χρήση του εντοπιστή
Μέθοδος | Target Σύνταξη | Παράδειγμα |
---|---|---|
Με ταυτότητα | id= id_of_the_element | id=email |
Από όνομα | όνομα=όνομα_του_στοιχείου | όνομα=όνομα χρήστη |
Ανά όνομα με χρήση φίλτρων | name=name_of_the_element filter=value_of_filter | name=tripType value=oneway |
Με κείμενο συνδέσμου | link=link_text | σύνδεσμος=ΕΓΓΡΑΦΗ |