Αποθήκευση μεταβλητών, ηχώ, ειδοποίηση, χειρισμός αναδυόμενων παραθύρων Selenium IDE

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

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

  • 🔘 Δημιουργήστε μια μεταβλητή: Η εντολή store λαμβάνει την τιμή στο Target και το όνομα της μεταβλητής στο Value.
  • ☑️ Διαβάστε το ξανά: Τυλίξτε το όνομα σε ${ } όπου μια εντολή δέχεται έναν στόχο ή μια τιμή.
  • Εκτύπωση για εντοπισμό σφαλμάτων: Η echo γράφει μια κυριολεκτική συμβολοσειρά ή μια μεταβλητή απευθείας στο αρχείο καταγραφής IDE.
  • 🧪 Οι ειδοποιήσεις γίνονται αυτόματα αποδεκτές: Το IDE κάνει κλικ στο OK για εσάς, επομένως χρησιμοποιήστε το storeAlert για να καταγράψετε το κείμενο του μηνύματος.
  • Οι επιβεβαιώσεις απαιτούν απόφαση: Τοποθετήστε την εντολή chooseOkOnNextConfirmation πριν από την εντολή που ανοίγει το παράθυρο διαλόγου.
  • 📊 Αλλαγή παραθύρων: Το selectWindow στοχεύει έναν τίτλο παραθύρου και ένας μηδενικός στόχος επιστρέφει στο γονικό παράθυρο.

Αποθήκευση μεταβλητών, ηχούς, ειδοποιήσεων και χειρισμού αναδυόμενων παραθύρων σε Selenium IDE

Σε αυτό το σεμινάριο θα μάθετε τις εντολές αποθήκευσης, την εντολή echo και τον χειρισμό ειδοποιήσεων και αναδυόμενων παραθύρων στο Selenium IDEΜαζί, αυτές οι εντολές μετατρέπουν ένα σταθερό καταγεγραμμένο σενάριο σε ένα που αντιδρά σε οτιδήποτε επιστρέφει η εφαρμογή κατά τον χρόνο εκτέλεσης.

⚠️ Σημείωση για τις εκδόσεις: Τα παρακάτω στιγμιότυπα οθόνης προέρχονται από το πρωτότυπο Firefox-πρόσθετο Selenium IDE, και οι εντολές χρησιμοποιούν τα ονόματα camelCase Selenese. Το τρέχον Chrome, Firefox και η επέκταση Edge διατηρεί την ίδια συμπεριφορά αλλά γράφει τα περισσότερα ονόματα εντολών με κενά. Ένας χάρτηςping Ο πίνακας εμφανίζεται προς το τέλος αυτού του άρθρου και κάθε αρχική εντολή και στιγμιότυπο οθόνης διατηρείται όπως έχει δημοσιευτεί.

Selenium Μεταβλητές IDE

κατάστημα

Για αποθήκευση μεταβλητών σε Selenium IDE, χρησιμοποιούμε το κατάστημα εντολή. Η παρακάτω εικόνα αποθηκεύει την τιμή "tutorial" σε μια μεταβλητή με το όνομα "myVariable".

Selenium Εντολή αποθήκευσης IDE με το σεμινάριο τιμών αποθηκευμένο στο myVariable

Για να αποκτήσετε πρόσβαση στη μεταβλητή, απλώς περικλείστε την σε ένα σύμβολο ${ … }. Για παράδειγμα, για να εισαγάγετε την τιμή του "myVariable" στο πλαίσιο κειμένου "userName" του Mercury Περιηγήσεις, εισαγάγετε ${myVariable} στο πεδίο Τιμή.

Selenium Εντολή τύπου IDE χρησιμοποιώντας ${myVariable} στο πεδίο Value του πλαισίου κειμένου userName

Εντολή Echo σε Selenium IDE

Μια αποθηκευμένη μεταβλητή είναι αόρατη μέχρι να την εκτυπώσει κάτι, και αυτό ακριβώς είναι το ηχώ Η εντολή κάνει. Γράφει ένα μήνυμα στο παράθυρο καταγραφής IDE κατά την αναπαραγωγή, γεγονός που την καθιστά τον πιο γρήγορο τρόπο για να επιβεβαιώσετε ότι μια εντολή αποθήκευσης κατέγραψε αυτό που περιμένατε πριν δημιουργήσετε ισχυρισμούς πάνω σε αυτήν.

Η εντολή δέχεται οποιαδήποτε από τις δύο μορφές:

  • Μια κυριολεκτική συμβολοσειρά. Βάλτε το κείμενο στο Target πεδίο, για παράδειγμα Το βήμα σύνδεσης ολοκληρώθηκε, για να επισημάνετε ένα σημείο ελέγχου σε ένα μακροσκελές σενάριο.
  • Μια μεταβλητή. Βάλτε το ${myVariable} στο Target πεδίο και η αποθηκευμένη τιμή εκτυπώνεται αντί για το όνομα.

Δύο συνήθειες κάνουν την ηχώ πολύ πιο χρήσιμη από ό,τι φαίνεται αρχικά. Εκτυπώστε μια μεταβλητή αμέσως μετά την εντολή store που τη δημιουργεί, έτσι ώστε μια αποτυχία να είναι tracστη σύλληψη αντί για την επιβεβαίωση είκοσι βήματα αργότερα. Και προτάσσει κάθε μήνυμα με το βήμα στο οποίο ανήκει, επειδή το παράθυρο καταγραφής εμφανίζει κάθε εντολή σε μία επίπεδη λίστα. Σημειώστε ότι η echo γράφει μόνο στο αρχείο καταγραφής — δεν αλλάζει ποτέ τη σελίδα και δεν αποτυγχάνει ποτέ σε μια δοκιμή, επομένως είναι ασφαλές να φύγετε μόνιμα σε ένα σενάριο.

StoreElementPresent

Αυτή η εντολή αποθηκεύει είτε την τιμή "true" είτε την τιμή "false" ανάλογα με την παρουσία του καθορισμένου στοιχείου. Το παρακάτω σενάριο αποθηκεύει την τιμή Boolean "true" σε "var1" και την τιμή "false" σε "var2". Για επαλήθευση, θα χρησιμοποιήσουμε την εντολή echo για να εμφανίσουμε τις τιμές των var1 και var2. Η βάση URL για την παρακάτω εικόνα ορίστηκε σε Mercury Αρχική σελίδα περιηγήσεων.

Selenium IDE storeElementPresent αποθηκεύει true στη var1 και false στη var2, επαναλαμβάνεται στο αρχείο καταγραφής

StoreText

Αυτή η εντολή χρησιμοποιείται για την αποθήκευση του εσωτερικού κειμένου ενός στοιχείου σε μια μεταβλητή. Η παρακάτω εικόνα αποθηκεύει το εσωτερικό κείμενο της ετικέτας h1 στη σελίδα εγγραφής στο Facebook σε μια μεταβλητή με το όνομα "textVar".

Selenium Εντολή IDE storeText που διαβάζει css=h1 στη μεταβλητή textVar

Δεδομένου ότι είναι το μόνο στοιχείο του είδους του στη σελίδα, είναι ασφαλές να χρησιμοποιήσουμε το "css=h1" ως στόχο μας. Η παρακάτω εικόνα δείχνει ότι Selenium Το IDE μπόρεσε να αποθηκεύσει τη συμβολοσειρά "Sign Up" στη μεταβλητή "textVar", επειδή η echo τύπωσε σωστά την τιμή της.

Selenium Εκτύπωση παραθύρου καταγραφής IDE Εγγραφή ως η τιμή που είναι αποθηκευμένη στο textVar

Ειδοποιήσεις, αναδυόμενα παράθυρα και πολλαπλές 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 το εκτυπώνει.

Selenium Σκριπτ IDE με εντολές click, storeAlert και echo στη σελίδα επίδειξης ειδοποίησης jsbin

Βήμα 3) Εκτελέστε το σενάριο και μην περιμένετε να δείτε την πραγματική ειδοποίηση. Το παρακάτω παράθυρο καταγραφής εμφανίζει το μήνυμα που καταγράφηκε, παρόλο που το παράθυρο διαλόγου δεν ήταν ποτέ ορατό.

Selenium Αρχείο καταγραφής IDE που εμφανίζει το κείμενο ειδοποίησης που ανακτήθηκε από το storeAlert μετά την αναπαραγωγή

Επιβεβαιώσεις

Οι επιβεβαιώσεις είναι αναδυόμενα παράθυρα που σας δίνουν ένα κουμπί 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.

Selenium Σκριπτ IDE που τοποθετεί την εντολή chooseOkOnNextConfirmation πριν από το κλικ που ανοίγει το παράθυρο διαλόγου

Βήμα 3) Εκτελέστε το σενάριο και παρατηρήστε ότι δεν βλέπετε την πραγματική επιβεβαίωση, ωστόσο η ιστοσελίδα εξακολουθεί να αναφέρει ποιο κουμπί Selenium Το IDE πατήθηκε.

Σελίδα δοκιμής που αναφέρει ότι πατήθηκε το κουμπί OK του παραθύρου διαλόγου επιβεβαίωσης

Βήμα 4) Αντικαταστήστε την εντολή chooseOkOnNextConfirmation με την εντολή chooseCancelOnNextConfirmation και εκτελέστε ξανά το σενάριο. Η σελίδα αναφέρει πλέον την αντίθετη επιλογή.

Selenium Το σενάριο IDE τροποποιήθηκε για να χρησιμοποιεί το chooseCancelOnNextConfirmation αντί για το chooseOkOnNextConfirmation

Πολλαπλούς Windows

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

Χρησιμοποιούμε την εντολή selectWindow για εναλλαγή μεταξύ παραθύρων.

Θα χρησιμοποιήσουμε τον σύνδεσμο http://jsbin.com/ocinaj/1, του οποίου ο τίτλος είναι «Πρώτο Παράθυρο». Ο υπερσύνδεσμος «εδώ» σε αυτήν τη σελίδα ανοίγει το Facebook σε νέο παράθυρο, μετά τον οποίο δίνουμε οδηγίες Selenium IDE για να κάνετε τα εξής:

  • Μεταφέρετε τον έλεγχο από το γονικό παράθυρο στο νέο παράθυρο του Facebook χρησιμοποιώντας την εντολή selectWindow με τον τίτλο του παραθύρου ως εντοπιστή.
  • Επαληθεύστε τον τίτλο του νέου παραθύρου.
  • Επιλέξτε ξανά το αρχικό παράθυρο χρησιμοποιώντας την εντολή selectWindow με την τιμή "null" ως στόχο.
  • Επαληθεύστε τον τίτλο του τρέχοντος επιλεγμένου παραθύρου.

Το παραπάνω σχέδιο μεταφράζεται στην ακολουθία τεσσάρων βημάτων που φαίνεται εδώ.

Διάγραμμα της εναλλαγής από το γονικό παράθυρο στο νέο παράθυρο και αντίστροφα

Βήμα 1) Ρυθμίστε τη βάση URL στο http://jsbin.com.

Βήμα 2) Δημιουργήστε το σενάριο όπως φαίνεται παρακάτω.

Selenium Σκριπτ IDE που χρησιμοποιεί selectWindow, pause και verifyTitle για μετακίνηση μεταξύ δύο παραθύρων

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

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

Αποτέλεσμα πράσινης πάσας σε Selenium IDE μετά την επαλήθευση και των δύο τίτλων παραθύρων

Να θυμάστε πάντα ότι η ρύθμιση του στόχου 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 παραθέτει το πλήρες τρέχον σύνολο εντολών.

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

Ναι. Οι μεταβλητές ${myVariable} και ${myvariable} αναφέρονται σε δύο διαφορετικές μεταβλητές και η αναφορά σε μία που δεν αποθηκεύτηκε ποτέ οδηγεί σε μια κενή συμβολοσειρά αντί να εμφανίζει σφάλμα. Διατηρήστε μια ενιαία σύμβαση ονομασίας σε μια σουίτα για να αποφύγετε τα σιωπηλά κενά.

Ναι. Η σύνταξη ${ } επεκτείνεται σε οποιοδήποτε Target ή πεδίο Τιμής, επομένως λειτουργεί μέσα σε μια εντολή ανοιχτού κώδικα, ένα XPath ή έναν επιλογέα CSS. Με αυτόν τον τρόπο, ένα καταγεγραμμένο σενάριο μετατρέπεται σε ένα που βασίζεται σε δεδομένα που καταγράφηκαν νωρίτερα στην εκτέλεση.

Η Σεληνική γλώσσα δεν έχει μαθηματικούς τελεστές. Χρησιμοποιήστε την εντολή execute script με μικρό JavaΠαράσταση σεναρίου που διαβάζει τη μεταβλητή και επιστρέφει το αποτέλεσμα και, στη συνέχεια, αποθηκεύει αυτήν την τιμή επιστροφής. Να θυμάστε ότι κάθε αποθηκευμένη τιμή φτάνει ως συμβολοσειρά, επομένως μετατρέψτε την πρώτα.

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

Μια προτροπή χρειάζεται κείμενο, όχι απλώς μια επιλογή κουμπιού. Εκτελέστε την εντολή answer στην επόμενη προτροπή με την απάντηση στο πεδίο Value πριν από την εντολή που την ανοίγει ή χρησιμοποιήστε την εντολή answer του προγράμματος οδήγησης web σε μια ορατή προτροπή όταν το παράθυρο διαλόγου βρίσκεται ήδη στην οθόνη.

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

Ναι. Εξαγωγή της δοκιμής σε Java or Pythonκαι, στη συνέχεια, αφήστε το Copilot να αναδιαμορφώσει τη λίστα επίπεδων εντολών σε αντικείμενα σελίδας και επαναχρησιμοποιήσιμες αναμονές. Ελέγξτε τον χειρισμό των ειδοποιήσεων χειροκίνητα, επειδή ο δημιουργημένος κώδικας συχνά προϋποθέτει ένα ορατό παράθυρο διαλόγου που το IDE έχει ήδη απορρίψει.

Η επιλογή βάσει τίτλου γίνεται ασαφής και ενδέχεται να επιλεγεί λάθος παράθυρο. Αυτός ακριβώς είναι ο λόγος για τον οποίο το τρέχον IDE προτιμά τις λαβές: καταγράψτε μία με λαβή παραθύρου αποθήκευσης αμέσως μετά το άνοιγμα του παραθύρου και, στη συνέχεια, μεταβείτε με handle=${yourHandle}.

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