Αποθήκευση μεταβλητών, ηχώ, ειδοποίηση, χειρισμός αναδυόμενων παραθύρων Selenium IDE
⚡ Έξυπνη Σύνοψη
Αποθήκευση εντολών σε Selenium Το IDE αποθηκεύει τις τιμές χρόνου εκτέλεσης σε επώνυμες μεταβλητές, η echo τις εκτυπώνει στο αρχείο καταγραφής και μια ειδική οικογένεια εντολών χειρίζεται ειδοποιήσεις, παράθυρα διαλόγου επιβεβαίωσης και εναλλαγή μεταξύ πολλαπλών παραθύρων προγράμματος περιήγησης.
Σε αυτό το σεμινάριο θα μάθετε τις εντολές αποθήκευσης, την εντολή echo και τον χειρισμό ειδοποιήσεων και αναδυόμενων παραθύρων στο Selenium IDEΜαζί, αυτές οι εντολές μετατρέπουν ένα σταθερό καταγεγραμμένο σενάριο σε ένα που αντιδρά σε οτιδήποτε επιστρέφει η εφαρμογή κατά τον χρόνο εκτέλεσης.
⚠️ Σημείωση για τις εκδόσεις: Τα παρακάτω στιγμιότυπα οθόνης προέρχονται από το πρωτότυπο Firefox-πρόσθετο Selenium IDE, και οι εντολές χρησιμοποιούν τα ονόματα camelCase Selenese. Το τρέχον Chrome, Firefox και η επέκταση Edge διατηρεί την ίδια συμπεριφορά αλλά γράφει τα περισσότερα ονόματα εντολών με κενά. Ένας χάρτηςping Ο πίνακας εμφανίζεται προς το τέλος αυτού του άρθρου και κάθε αρχική εντολή και στιγμιότυπο οθόνης διατηρείται όπως έχει δημοσιευτεί.
Selenium Μεταβλητές IDE
κατάστημα
Για αποθήκευση μεταβλητών σε Selenium IDE, χρησιμοποιούμε το κατάστημα εντολή. Η παρακάτω εικόνα αποθηκεύει την τιμή "tutorial" σε μια μεταβλητή με το όνομα "myVariable".
Για να αποκτήσετε πρόσβαση στη μεταβλητή, απλώς περικλείστε την σε ένα σύμβολο ${ … }. Για παράδειγμα, για να εισαγάγετε την τιμή του "myVariable" στο πλαίσιο κειμένου "userName" του Mercury Περιηγήσεις, εισαγάγετε ${myVariable} στο πεδίο Τιμή.
Εντολή Echo σε Selenium IDE
Μια αποθηκευμένη μεταβλητή είναι αόρατη μέχρι να την εκτυπώσει κάτι, και αυτό ακριβώς είναι το ηχώ Η εντολή κάνει. Γράφει ένα μήνυμα στο παράθυρο καταγραφής IDE κατά την αναπαραγωγή, γεγονός που την καθιστά τον πιο γρήγορο τρόπο για να επιβεβαιώσετε ότι μια εντολή αποθήκευσης κατέγραψε αυτό που περιμένατε πριν δημιουργήσετε ισχυρισμούς πάνω σε αυτήν.
Η εντολή δέχεται οποιαδήποτε από τις δύο μορφές:
- Μια κυριολεκτική συμβολοσειρά. Βάλτε το κείμενο στο Target πεδίο, για παράδειγμα Το βήμα σύνδεσης ολοκληρώθηκε, για να επισημάνετε ένα σημείο ελέγχου σε ένα μακροσκελές σενάριο.
- Μια μεταβλητή. Βάλτε το ${myVariable} στο Target πεδίο και η αποθηκευμένη τιμή εκτυπώνεται αντί για το όνομα.
Δύο συνήθειες κάνουν την ηχώ πολύ πιο χρήσιμη από ό,τι φαίνεται αρχικά. Εκτυπώστε μια μεταβλητή αμέσως μετά την εντολή store που τη δημιουργεί, έτσι ώστε μια αποτυχία να είναι tracστη σύλληψη αντί για την επιβεβαίωση είκοσι βήματα αργότερα. Και προτάσσει κάθε μήνυμα με το βήμα στο οποίο ανήκει, επειδή το παράθυρο καταγραφής εμφανίζει κάθε εντολή σε μία επίπεδη λίστα. Σημειώστε ότι η echo γράφει μόνο στο αρχείο καταγραφής — δεν αλλάζει ποτέ τη σελίδα και δεν αποτυγχάνει ποτέ σε μια δοκιμή, επομένως είναι ασφαλές να φύγετε μόνιμα σε ένα σενάριο.
StoreElementPresent
Αυτή η εντολή αποθηκεύει είτε την τιμή "true" είτε την τιμή "false" ανάλογα με την παρουσία του καθορισμένου στοιχείου. Το παρακάτω σενάριο αποθηκεύει την τιμή Boolean "true" σε "var1" και την τιμή "false" σε "var2". Για επαλήθευση, θα χρησιμοποιήσουμε την εντολή echo για να εμφανίσουμε τις τιμές των var1 και var2. Η βάση URL για την παρακάτω εικόνα ορίστηκε σε Mercury Αρχική σελίδα περιηγήσεων.
StoreText
Αυτή η εντολή χρησιμοποιείται για την αποθήκευση του εσωτερικού κειμένου ενός στοιχείου σε μια μεταβλητή. Η παρακάτω εικόνα αποθηκεύει το εσωτερικό κείμενο της ετικέτας h1 στη σελίδα εγγραφής στο Facebook σε μια μεταβλητή με το όνομα "textVar".
Δεδομένου ότι είναι το μόνο στοιχείο του είδους του στη σελίδα, είναι ασφαλές να χρησιμοποιήσουμε το "css=h1" ως στόχο μας. Η παρακάτω εικόνα δείχνει ότι Selenium Το IDE μπόρεσε να αποθηκεύσει τη συμβολοσειρά "Sign Up" στη μεταβλητή "textVar", επειδή η echo τύπωσε σωστά την τιμή της.
Ειδοποιήσεις, αναδυόμενα παράθυρα και πολλαπλές Windows
Οι ειδοποιήσεις είναι ίσως η απλούστερη μορφή αναδυόμενου παραθύρου. Το πιο συνηθισμένο Selenium Οι εντολές IDE που χρησιμοποιούνται για το χειρισμό ειδοποιήσεων είναι οι ακόλουθες:
| Ειδοποιήσεις | |
|---|---|
|
assertAlert assertNotAlert |
ανακτά το μήνυμα της ειδοποίησης και το δηλώνει σε μια τιμή συμβολοσειράς που καθορίσατε |
|
assertAlertPresent assertAlertNotPresent |
επιβεβαιώνει εάν υπάρχει ή όχι μια ειδοποίηση |
| storeAlert | ανακτά το μήνυμα ειδοποίησης και το αποθηκεύει σε μια μεταβλητή που καθορίζετε |
| storeAlertPresent | επιστρέφει TRUE εάν υπάρχει ειδοποίηση, FALSE διαφορετικά |
|
VerifyAlert verifyNotAlert |
ανακτά το μήνυμα της ειδοποίησης και επαληθεύει εάν ισούται με την τιμή συμβολοσειράς που καθορίσατε |
|
verifyAlertPresent verifyAlertNotPresent |
επαληθεύει εάν υπάρχει ή όχι μια ειδοποίηση |
Να θυμάστε αυτά τα δύο πράγματα όταν εργάζεστε με ειδοποιήσεις:
- Selenium Το IDE κάνει αυτόματα κλικ στο κουμπί OK του παραθύρου ειδοποίησης, επομένως δεν θα μπορείτε να δείτε την πραγματική ειδοποίηση.
- Selenium Το IDE δεν μπορεί να χειριστεί ειδοποιήσεις που ενεργοποιούνται εντός της συνάρτησης onload() της σελίδας. Χειρίζεται μόνο ειδοποιήσεις που δημιουργούνται μετά την πλήρη φόρτωση της σελίδας.
Σε αυτό το παράδειγμα χρησιμοποιούμε την εντολή storeAlert για να δείξουμε ότι παρόλο που Selenium Το IDE δεν εμφάνισε την πραγματική ειδοποίηση, αλλά παρόλα αυτά μπόρεσε να ανακτήσει το μήνυμα.
Βήμα 1) In Selenium IDE, ορίστε τη βάση URL στο http://jsbin.com. Το πλήρες URL είναι http://jsbin.com/usidix. Αυτά τα αποσπάσματα jsbin χρονολογούνται από το Firefox-εποχή plugin και ενδέχεται να μην επιλύεται πλέον. Οποιαδήποτε σελίδα με κουμπί που ενεργοποιεί μια ειδοποίηση αναπαράγει το ίδιο αποτέλεσμα.
Βήμα 2) Δημιουργήστε το σενάριο όπως φαίνεται παρακάτω. Η εντολή click στοχεύει το κουμπί Go!, το storeAlert καταγράφει το μήνυμα στο alertMessage και το echo το εκτυπώνει.
Βήμα 3) Εκτελέστε το σενάριο και μην περιμένετε να δείτε την πραγματική ειδοποίηση. Το παρακάτω παράθυρο καταγραφής εμφανίζει το μήνυμα που καταγράφηκε, παρόλο που το παράθυρο διαλόγου δεν ήταν ποτέ ορατό.
Επιβεβαιώσεις
Οι επιβεβαιώσεις είναι αναδυόμενα παράθυρα που σας δίνουν ένα κουμπί OK και ένα κουμπί ΑΚΥΡΩΣΗΣ, σε αντίθεση με τις ειδοποιήσεις, οι οποίες σας δίνουν μόνο το κουμπί OK. Οι εντολές που μπορείτε να χρησιμοποιήσετε για τον χειρισμό των επιβεβαιώσεων αντικατοπτρίζουν τις εντολές ειδοποιήσεων.
- βεβαιώνω / βεβαιώνω / Δεν βεβαιώνω
- assertConfirmationPresent / assertConfirmationNotPresent
- Επιβεβαίωση αποθήκευσης
- storeConfirmationPresent
- επαλήθευση επιβεβαίωσης / επαλήθευσημη επιβεβαίωσης
- verifyConfirmationPresent / verifyConfirmationNotPresent
Επιπλέον, αυτές οι εντολές λένε Selenium ποιο κουμπί να επιλέξετε, OK ή CANCEL.
- επιλέξτεΕντάξειΣτηνΕπόμενηΕπιβεβαίωση / επιλέξτεΕντάξειΣτηνΕπόμενηΕπιβεβαίωσηΚαιΠεριμένετε
- επιλέξτεCancelOnNextΕπιβεβαίωση
Τοποθετήστε αυτές τις εντολές πριν η εντολή που ενεργοποιεί το πλαίσιο επιβεβαίωσης, έτσι ώστε Selenium Το IDE γνωρίζει εκ των προτέρων ποια επιλογή να επιλέξει. Και πάλι, δεν θα δείτε το πραγματικό πλαίσιο επιβεβαίωσης κατά την εκτέλεση του σεναρίου.
Ας δοκιμάσουμε μια ιστοσελίδα με ένα κουμπί που έχει κωδικοποιηθεί για να αναφέρει εάν ο χρήστης πάτησε OK ή CANCEL.
Βήμα 1) In Selenium IDE, ορίστε τη βάση URL στο http://jsbin.com. Το πλήρες URL είναι http://jsbin.com/enifaf.
Βήμα 2) Δημιουργήστε το σενάριο όπως φαίνεται παρακάτω. Αυτή τη φορά θα πατήσουμε πρώτα το κουμπί OK.
Βήμα 3) Εκτελέστε το σενάριο και παρατηρήστε ότι δεν βλέπετε την πραγματική επιβεβαίωση, ωστόσο η ιστοσελίδα εξακολουθεί να αναφέρει ποιο κουμπί Selenium Το IDE πατήθηκε.
Βήμα 4) Αντικαταστήστε την εντολή chooseOkOnNextConfirmation με την εντολή chooseCancelOnNextConfirmation και εκτελέστε ξανά το σενάριο. Η σελίδα αναφέρει πλέον την αντίθετη επιλογή.
Πολλαπλούς Windows
Εάν κάνετε κλικ σε έναν σύνδεσμο που ανοίγει ένα ξεχωριστό παράθυρο, πρέπει πρώτα να δώσετε οδηγίες Selenium IDE για να επιλέξετε αυτό το παράθυρο πριν να έχετε πρόσβαση στα στοιχεία που περιέχει. Στο παλαιό IDE χρησιμοποιείτε τον τίτλο του παραθύρου ως εντοπιστή του.
Χρησιμοποιούμε την εντολή selectWindow για εναλλαγή μεταξύ παραθύρων.
Θα χρησιμοποιήσουμε τον σύνδεσμο http://jsbin.com/ocinaj/1, του οποίου ο τίτλος είναι «Πρώτο Παράθυρο». Ο υπερσύνδεσμος «εδώ» σε αυτήν τη σελίδα ανοίγει το Facebook σε νέο παράθυρο, μετά τον οποίο δίνουμε οδηγίες Selenium IDE για να κάνετε τα εξής:
- Μεταφέρετε τον έλεγχο από το γονικό παράθυρο στο νέο παράθυρο του Facebook χρησιμοποιώντας την εντολή selectWindow με τον τίτλο του παραθύρου ως εντοπιστή.
- Επαληθεύστε τον τίτλο του νέου παραθύρου.
- Επιλέξτε ξανά το αρχικό παράθυρο χρησιμοποιώντας την εντολή selectWindow με την τιμή "null" ως στόχο.
- Επαληθεύστε τον τίτλο του τρέχοντος επιλεγμένου παραθύρου.
Το παραπάνω σχέδιο μεταφράζεται στην ακολουθία τεσσάρων βημάτων που φαίνεται εδώ.
Βήμα 1) Ρυθμίστε τη βάση URL στο http://jsbin.com.
Βήμα 2) Δημιουργήστε το σενάριο όπως φαίνεται παρακάτω.
Χρειαζόμαστε την εντολή παύσης για να περιμένουμε να φορτώσει το νέο παράθυρο που ξεκίνησε πριν μπορέσουμε να διαβάσουμε τον τίτλο του.
Βήμα 3) Εκτελέστε το σενάριο. Παρατηρήστε ότι το περίπτωση δοκιμής πέρασε, πράγμα που σημαίνει ότι μπορέσαμε να κάνουμε εναλλαγή μεταξύ παραθύρων και να επαληθεύσουμε τους τίτλους τους με επιτυχία.
Να θυμάστε πάντα ότι η ρύθμιση του στόχου selectWindow σε "null" επιλέγει αυτόματα το γονικό παράθυρο — σε αυτήν την περίπτωση το παράθυρο όπου βρίσκεται το στοιχείο "link=here".
Σημείωση: Το Facebook έχει αλλάξει τον τίτλο της σελίδας του από τότε που δημιουργήθηκε αυτό το σεμινάριο. Τροποποιήστε τον αναμενόμενο τίτλο στο σενάριο ανάλογα.
ΜΟΝΤΕΡΝΑ Selenium Ισοδύναμα IDE αυτών των εντολών
The FirefoxΤο IDE του -plugin αποσύρθηκε όταν Firefox μετακινήθηκε στην αρχιτεκτονική WebExtensions και στο τρέχον Chrome, Firefox και η επέκταση Edge μετονόμασε τις περισσότερες εντολές Selenese σε μορφή με διάστιχο. Η συμπεριφορά παραμένει αμετάβλητη, επομένως ο παρακάτω πίνακας είναι το μόνο που χρειάζεστε για να διαβάσετε τα παραπάνω σενάρια σε σχέση με μια τρέχουσα εγκατάσταση.
| Παλαιότερη εντολή σε αυτό το σεμινάριο | Ρεύμα Selenium Εντολή IDE |
|---|---|
| κατάστημα | κατάστημα |
| ηχώ | ηχώ |
| storeText | αποθήκευση κειμένου |
| storeElementPresent | αποθήκευση στοιχείου που υπάρχει (ή επιβεβαίωση στοιχείου που υπάρχει) |
| assertAlert / verifyAlert | επιβεβαίωση ειδοποίησης / επαλήθευση ειδοποίησης |
| chooseOkOnNextΕπιβεβαίωση | επιλέξτε OK στην επόμενη επιβεβαίωση |
| επιλέξτεCancelOnNextΕπιβεβαίωση | επιλέξτε ακύρωση στην επόμενη επιβεβαίωση |
| selectWindow (τίτλος ως στόχος) | επιλογή παραθύρου με handle=${handle} |
Δύο διαφορές αξίζει να επισημανθούν. Οι προτροπές, τις οποίες δεν καλύπτει το παλαιότερο άρθρο, έχουν πλέον τις δικές τους εντολές: απάντηση στην επόμενη ερώτηση σχεδιάζει την απάντηση πριν εμφανιστεί το παράθυρο διαλόγου και απάντηση προγράμματος οδήγησης ιστού σε ορατό μήνυμα πληκτρολογεί σε μια προτροπή που είναι ήδη ανοιχτή. Και η εναλλαγή παραθύρων δεν βασίζεται πλέον στον τίτλο της σελίδας. Εκτέλεση λαβή βιτρίνας καταστήματος για να πιάσεις πρώτα μια λαβή και μετά να περάσεις handle=${ηΧειρίδασας} για να επιλέξετε παράθυρο. Αυτή η αλλαγή καταργεί τη λειτουργία σφάλματος που περιγράφεται στην παραπάνω σημείωση, όπου ένας ιστότοπος απλώς μετονομάζει τη σελίδα του και το σενάριο σταματά να βρίσκει το παράθυρο. Η επίσημη Selenium Ιστότοπος έργου IDE παραθέτει το πλήρες τρέχον σύνολο εντολών.













