Selenium Βασικές επεκτάσεις (User-Extensions.js)

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

Selenium Οι βασικές επεκτάσεις, που ονομάζονται επίσης επεκτάσεις χρήστη, προσθέτουν προσαρμοσμένες ενέργειες, στοιχεία πρόσβασης και στρατηγικές εντοπισμού σε Selenium IDE συνδέοντας JavaΛειτουργίες σεναρίου για το Selenium και τα πρωτότυπα αντικείμενα PageBot κατά την εκκίνηση του IDE.

  • 🔘 Τρεις πυλώνες: Κάθε εντολή Selenese είναι μια ενέργεια, μια προσπέλαση ή μια διεκδίκηση ή μια στρατηγική εντοπισμού.
  • ☑️ Κανόνες ονομασίας: Οι ενέργειες ξεκινούν με do, οι παράμετροι πρόσβασης με get ή is και οι παράμετροι εντοπισμού με locateElementBy.
  • Ελεύθερη εντολή αναμονής: Η καταχώριση του doTextUpperCase κάνει το IDE να δημιουργεί αυτόματα το textUpperCaseAndWait.
  • 🧪 Μηχανισμός φόρτωσης: Το IDE διαβάζει το user-extensions.js κατά την εκκίνηση, επομένως το εργαλείο πρέπει να επανεκκινείται μετά από κάθε επεξεργασία.
  • Κατάσταση παλαιού τύπου: Selenium Πυρήνας και το Firefox-plugin IDE αποσύρθηκαν και Selenium 3 άδειες υποστήριξης επεκτάσεων χρήστη από τα jar.
  • 📊 Σύγχρονη διαδρομή: Το τρέχον IDE επέκτασης προγράμματος περιήγησης εκθέτει αντ' αυτού ένα μανιφέστο πρόσθετου και μια εντολή εκτέλεσης δέσμης ενεργειών.

Selenium Βασικές επεκτάσεις και το αρχείο user-extensions.js

Selenium Βασικές επεκτάσεις

Για να κατανοήσουμε τις επεκτάσεις, ας κατανοήσουμε πρώτα τους τρεις πυλώνες της Selenium IDEΚάθε εντολή που καταγράφετε ή πληκτρολογείτε στο IDE ανήκει σε μία από τις τρεις παρακάτω κατηγορίες και κάθε στιγμιότυπο οθόνης δείχνει πώς εμφανίζεται αυτή η κατηγορία στη λίστα εντολών του IDE.

  1. Ενέργειες: Ποια λειτουργία εκτελείτε στην οθόνη UI.

    Selenium Λίστα εντολών IDE που εμφανίζει εντολές ενέργειας όπως κλικ και πληκτρολόγηση

  2. Αξεσουάρ / Ισχυρισμός: Τι επαλήθευση εκτελείτε στα δεδομένα που λαμβάνετε από το περιβάλλον χρήστη.

    Selenium Εντολές πρόσβασης και assertion IDE με πρόθεμα get, is, verify και assert

  3. Στρατηγική εντοπισμού: Πώς βρίσκετε το στοιχείο στο περιβάλλον χρήστη.

    Selenium Στρατηγικές εντοπισμού όπως id, name, css και xpath στο πλαίσιο στόχου IDE

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

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

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

⚠️ Πριν ξεκινήσετε: η ροή εργασίας που περιγράφεται εδώ ανήκει σε Selenium Πυρήνας και το πρωτότυπο Firefox-πρόσθετο Selenium IDE. Selenium Ο πυρήνας έχει αποσυρθεί και η υποστήριξη επεκτάσεων χρήστη έχει καταργηθεί από το Selenium βάζα σε Selenium 3. Τα βήματα και ο κώδικας που ακολουθούν διατηρούνται επειδή ένας μεγάλος αριθμός παλαιών σουιτών Selenese εξακολουθούν να εξαρτώνται από αυτά. Η σύγχρονη αντικατάσταση περιγράφεται αργότερα σε αυτό το άρθρο.

Απαίτηση για τη δημιουργία ενός Selenium Επέκταση χρήστη

Για να δημιουργήσετε μια επέκταση χρήστη για Selenium IDE, χρειάζεστε τις βασικές έννοιες του JavaΓραφή και, ειδικότερα, το JavaΠρωτότυπο αντικείμενο σεναρίου. Το παρακάτω διάγραμμα δείχνει τα δύο πρωτότυπα αντικείμενα στα οποία συνδέεται μια επέκταση χρήστη.

Διάγραμμα του Selenium πρωτότυπο και αντικείμενα πρωτοτύπου PageBot που χρησιμοποιούνται από μια επέκταση χρήστη

Για να δημιουργήσετε την επέκταση χρήστη σας, γράφετε Javaμεθόδους σεναρίου και προσθήκη τους στο Selenium πρωτότυπο αντικειμένου και στο πρωτότυπο αντικειμένου PageBot.

Πως Selenium Το IDE αναγνωρίζει μια επέκταση χρήστη

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

Πώς να δημιουργήσετε μια επέκταση χρήστη

Βήμα 1) Δράση – όλες οι ενέργειες ξεκινούν με doΕάν η ενέργεια μετατρέπει κείμενο σε κεφαλαία γράμματα, το όνομά της είναι doTextUpperCaseΌταν προσθέτετε αυτήν τη μέθοδο ενέργειας σε Selenium IDE, το ίδιο το IDE δημιουργεί μια αντίστοιχη μέθοδο αναμονής, επομένως doTextUpperCase παράγει επίσης τη συνάρτηση αναμονής κείμενομεκεφαλαίακαιπεριμένετεΗ μέθοδος μπορεί να δεχτεί δύο παραμέτρους.

Παράδειγμα: Ενέργεια με κεφαλαία γράμματα

Selenium.prototype.doTextUpperCase = function(locator, text) {
// Here findElement is itself capable to handle all type of locator(xpath,css,name,id,className), We just need to pass the locator text
var element = this.page().findElement(locator);

// Create the text to type
text = text.toUpperCase();

// Replace the element text with the new text
this.page().replaceText(element, text);
};

Βήμα 2) Προσαρτήματα / Διεκδίκηση – όλοι οι εγγεγραμμένοι χρήστες πρόσβασης στο Selenium πρωτότυπο αντικειμένου έχουν πρόθεμα παίρνω or is, για παράδειγμα getValueFromCompoundTable ή isValueFromCompoundTable. Ένα accessor μπορεί να δεχτεί δύο παραμέτρους, μία για τον στόχο και μία για το πεδίο τιμών στην περίπτωση δοκιμής. Το παρακάτω στιγμιότυπο οθόνης δείχνει πώς εμφανίζονται αυτά τα προθέματα μόλις φορτωθεί η επέκταση.

Selenium IDE που εμφανίζει τις εντολές πρόσβασης get και is που δημιουργούνται από μια επέκταση χρήστη

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

Παράδειγμα: Για κεφαλαία γράμματα σε προσαρτήματα κειμένου

Selenium.prototype.assertTextUpperCase = function(locator, text) {
// All locator-strategies are automatically handled by "findElement"
var element = this.page().findElement(locator);

// Create the text to verify
text = text.toUpperCase();

// Get the actual element value
var actualValue = element.value;

// Make sure the actual value matches the expected
Assert.matches(expectedValue, actualValue);
};

Selenium.prototype.isTextEqual = function(locator, text) {
return this.getText(locator).value===text;
};

Selenium.prototype.getTextValue = function(locator, text) {
return this.getText(locator).value;
};

Βήμα 3) Στρατηγική εντοπισμού – αν θέλετε να δημιουργήσετε τη δική σας συνάρτηση για να εντοπίσετε ένα στοιχείο, επεκτείνετε το πρωτότυπο PageBot με μια συνάρτηση με πρόθεμα εντοπισμός στοιχείου απόΛαμβάνει δύο παραμέτρους: τη συμβολοσειρά εντοπιστή και το έγγραφο στο οποίο θα πρέπει να αναζητηθεί το στοιχείο.

Παράδειγμα: Για τον εντοπισμό κεφαλαίων κειμένων

// The "inDocument" is a document you are searching.
PageBot.prototype.locateElementByUpperCase = function(text, inDocument) {
// Create the text to search for
var expectedValue = text.toUpperCase();

// Loop through all elements, looking for ones that have
// a value === our expected value
var allElements = inDocument.getElementsByTagName("*");
// This star '*' is a kind of regular expression it will go through every element (in HTML DOM every element surely have a tag name like<body>,<a>,<h1>,<table>,<tr>,<td> etc. ). Here our motive is to find an element which matched with the Upper Case text we have passed so we will search it with all elements and when we get match we will have the correct web element.
for (var i = 0; i < allElements.length; i++) {
var testElement = allElements[i];
if (testElement.innerHTML && testElement.innerHTML === expectedValue) {
return testElement;
}
}
return null;
};

Αποθηκεύστε και τις τρεις συναρτήσεις σε ένα μόνο αρχείο με το όνομα user-extensions.jsΤο αρχείο είναι απλό JavaScript, επομένως οποιοσδήποτε επεξεργαστής κειμένου είναι επαρκής.

Πώς να χρησιμοποιήσετε την πρόσφατα δημιουργημένη επέκταση πυρήνα

Η φόρτωση του αρχείου είναι μια εργασία τεσσάρων βημάτων στο πρωτότυπο Firefox-plugin IDE. Κάθε στιγμιότυπο οθόνης παρακάτω αντιστοιχεί στο αριθμημένο βήμα δίπλα του.

  1. Πηγαίνετε στο Selenium IDE και κάντε κλικ Επιλογές -> Επιλογές…

    Selenium Άνοιξε το μενού Επιλογές IDE για να μεταβείτε στο παράθυρο διαλόγου Επιλογές

  2. Στο Γενικός ενότητα, επιλέξτε την τοποθεσία του νεοδημιουργημένου Selenium Επέκταση πυρήνα.

    Selenium Παράθυρο διαλόγου Επιλογές IDE Καρτέλα Γενικά με το Selenium Πεδίο διαδρομής αρχείου επεκτάσεων πυρήνα

  3. Πατήστε OK και επανεκκίνηση Selenium SDI.

    Εμφανίζεται η ερώτηση επιβεβαίωσης όταν Selenium Το IDE επανεκκινείται για να φορτώσει το αρχείο επέκτασης

  4. Θα βρείτε την επέκταση στη λίστα εντολών.

    Selenium Αναπτυσσόμενο μενού εντολών IDE που παραθέτει τη νέα εντολή textUpperCase από το user-extensions.js

Selenium Βασικές επεκτάσεις vs Selenium Επεκτάσεις IDE

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

Άποψη Selenium Επέκταση πυρήνα Selenium Επέκταση IDE
Τι επεκτείνει Η βιβλιοθήκη εντολών Selenese που χρησιμοποιείται κατά την αναπαραγωγή Η ίδια η εφαρμογή IDE
Το αρχείο φορτώθηκε user-extensions.js user-extensions-ide.js στο παλαιό IDE, ένα μανιφέστο πρόσθετου στο τρέχον IDE
Τυπική χρήση Νέες ενέργειες, προσβάσεις και στρατηγικές εντοπισμού Νέα στοιχεία μενού, πίνακες, μορφές και συμπεριφορά συσκευής εγγραφής
Αντικείμενα που άγγιξαν Selenium.prototype και PageBot.prototype API επεξεργασίας και εγγραφής IDE
Εκτελείται κατά τη διάρκεια Εκτέλεση δοκιμής Συγγραφή και ηχογράφηση

Με λίγα λόγια, μια επέκταση Core αλλάζει τι μπορεί να κάνει μια δοκιμή, ενώ μια επέκταση IDE αλλάζει τι μπορεί να κάνει το εργαλείο.

Πώς το Σύγχρονο Selenium Το IDE αντικαθιστά το user-extensions.js

The Firefox-πρόσθετο Selenium Το IDE σταμάτησε να λειτουργεί όταν Firefox μετακινήθηκε στην αρχιτεκτονική WebExtensions και το IDE ξαναγράφτηκε ως Chrome, Firefox και την επέκταση του προγράμματος περιήγησης Edge. Αυτή η επανεγγραφή αφαίρεσε το πεδίο Επιλογές που φαίνεται παραπάνω, επομένως δεν υπάρχει σημείο για να υποδείξετε ένα αρχείο user-extensions.js. Δύο υποστηριζόμενες εναλλακτικές λύσεις καλύπτουν το ίδιο πεδίο.

  • Η εντολή εκτέλεσης σεναρίου. Για εφάπαξ χρήση JavaΣενάριο, προσθέστε ένα εκτέλεση σεναρίου or εκτέλεση ασύγχρονου σεναρίου προχωρήστε απευθείας στη δοκιμή και αποθηκεύστε το αποτέλεσμα σε μια μεταβλητή. Αυτό είναι το πλησιέστερο ισοδύναμο με μια μικρή προσαρμοσμένη ενέργεια.
  • Ένα πρόσθετο (plugin). Για επαναχρησιμοποιήσιμες εντολές, δημιουργήστε μια επέκταση προγράμματος περιήγησης που καταχωρεί ένα μανιφέστο στο IDE. Το μανιφέστο δηλώνει κάθε νέα εντολή με ένα αναγνωριστικό, ένα όνομα, έναν προαιρετικό τύπο και τεκμηρίωση, και μπορεί επίσης να δηλώσει νέους εντοπιστές.

Η δήλωση καταχωρείται στέλνοντας ένα μήνυμα στην επέκταση IDE, όπως φαίνεται στην επίσημη Selenium Τεκμηρίωση πρόσθετου IDE.

browser.runtime.sendMessage(SIDE_ID, {
uri: "/register",
verb: "post",
payload: {
name: "Selenium IDE plugin",
version: "1.0.0",
commands: [
{ id: "textUpperCase", name: "text upper case" }
]
}
}).catch(console.error);

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

Δημοφιλείς επεκτάσεις και πρόσθετα που χρησιμοποιούνται σε Selenium IDE

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

Όνομα Σκοπός
αγαπημένα Για να επισημάνετε μια σουίτα δοκιμών ως αγαπημένη και να την εκτελέσετε με ένα κλικ
Flex Pilot X Για αυτοματισμούς με βάση το Flex
FlexMonkium Για εγγραφή και αναπαραγωγή βάσει Adobe Flex δοκιμών in Selenium IDE
Καταγραφή αρχείων Για αποθήκευση αρχείων καταγραφής σε αρχείο
Έλεγχος ροής Για τον έλεγχο της ροής εκτέλεσης της δοκιμής
Επισημάνετε στοιχεία Για να επισημάνετε ένα στοιχείο ελέγχου ιστού
Σιωπηρή αναμονή Να περιμένετε ένα στοιχείο για ένα συγκεκριμένο χρονικό όριο
Στιγμιότυπο οθόνης σε αποτυχία Τραβήξτε ένα στιγμιότυπο οθόνης για την αποτυχία
Αποτελεσματα Εξετασεων Αποθηκεύστε το περίπτωση δοκιμής αποτέλεσμα για μια δοκιμαστική σουίτα με ένα κλικ

Η παλιά SeleniumΗ σελίδα λήψης HQ που φιλοξενούσε αυτά τα αρχεία δεν υπάρχει πλέον. Τα τρέχοντα πρόσθετα και το ίδιο το IDE διανέμονται από το Selenium Ιστότοπος έργου IDE και από το Chrome, Firefox και καταστήματα πρόσθετων υπηρεσιών Edge.

Κατεβάστε το Selenium Core Extension που χρησιμοποιείται σε αυτό το σεμινάριο

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

Το συμβατικό όνομα είναι user-extensions.js και τα πρόσθετα σε επίπεδο IDE χρησιμοποιούσαν το user-extensions-ide.js. Το παλαιό IDE σας επέτρεπε να υποδεικνύετε οποιαδήποτε διαδρομή, επομένως το όνομα ήταν μια σύμβαση και όχι μια αυστηρή απαίτηση, αλλά διατηρήστεping Κάνει τις κοινόχρηστες σουίτες πιο εύκολα αναγνωρίσιμες.

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

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

Γράφετε μόνο την έκδοση με πρόθεμα do. Selenium Το IDE παράγει την παραλλαγή AndWait για εσάς, η οποία εκτελεί την ίδια λειτουργία και στη συνέχεια περιμένει να ολοκληρωθεί η φόρτωση της σελίδας. Χρησιμοποιήστε τη φόρμα AndWait όταν η ενέργεια ενεργοποιεί την πλοήγηση.

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

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

Ναι. Ένα αρχείο που δεν περιέχει τίποτα άλλο παρά μια συνάρτηση locateElementBy στο PageBot.prototype είναι έγκυρο. Η νέα στρατηγική γίνεται στη συνέχεια διαθέσιμη σε κάθε υπάρχουσα εντολή, επομένως οι επιλογές "κλικ", "πληκτρολόγηση" και "assert" μπορούν να στοχεύσουν όλα τα στοιχεία μέσω αυτής.

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

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