protractor testing tool
Τι είναι το μοιρογνωμόνιο;
Το Protractor είναι ένα εργαλείο δοκιμών αυτοματισμού για δοκιμές εφαρμογών ιστού. συνδυάζοντας ισχυρές τεχνολογίες όπως Jasmine, Selenium Webdriver, Node.js κ.λπ.
Το εργαλείο δοκιμής Protractor είναι ένα ολοκληρωμένο πλαίσιο δοκιμών με γνώμονα τη συμπεριφορά που έχει σχεδιαστεί λαμβάνοντας υπόψη τις εφαρμογές Angular JS. Ακόμα κι αν αυτό ακούγεται ότι το Protractor δεν θα λειτουργεί με μη γωνιακές εφαρμογές JS, αυτό ισχύει.
Λειτουργεί τόσο με γωνιακές όσο και με μη γωνιακές εφαρμογές JS εξίσου καλά.
Μη διστάσετε να εξερευνήσετε το ολόκληρη σειρά μαθημάτων AngularJS . Στο προηγούμενο σεμινάριό μας, η διαφορά μεταξύ γωνιακών εκδόσεων εξηγήθηκε λεπτομερώς.
Τι θα μάθετε:
- Protractor εναντίον Selenium WebDriver
- Χαρακτηριστικά
- Πώς μπορεί να με βοηθήσει το μοιρογνωμόνιο;
- Ποιο πλαίσιο για χρήση;
- Πώς να κατεβάσετε και να ρυθμίσετε το μοιρογνωμόνιο
- Είστε έτοιμοι να δημιουργήσετε την πρώτη σας δοκιμαστική θήκη;
- Πώς να εκτελέσετε τις δοκιμαστικές σας περιπτώσεις;
- Μερικά πιο δροσερά χαρακτηριστικά του Protractor
- συμπέρασμα
- Συνιστώμενη ανάγνωση
Protractor εναντίον Selenium WebDriver
Αυτό που κάνει το Protractor διαφορετικό από το παραδοσιακό Selenium WebDriver ;
Αφιερώστε ένα λεπτό για να απαντήσετε σε αυτές τις ερωτήσεις:
- Είναι ένας αγώνας για να προσδιορίσετε πότε ακριβώς φορτώνεται τελικά η ιστοσελίδα (Όλα τα ασύγχρονα στοιχεία είναι έτοιμα και επεξεργάζονται);
- Έχετε κουραστεί να προσθέτετε αναμονή και ύπνο στον κωδικό σας;
- Θέλετε να απαλλαγείτε από την επίπονη προσπάθεια εντοπισμού των γωνιακών στοιχείων;
- Απογοητευμένοι με τον εντοπισμό στοιχείων με την αλλαγή ταυτότητας;
- Θέλετε να δημιουργήσετε το δικό σας εργαλείο εντοπισμού;
- Γράφετε χρονοβόρο κώδικα ακόμη και για τους απλούστερους ισχυρισμούς;
- Είστε λάτρης της JavaScript ή θαυμαστής;
Εάν απαντήσατε Ναι σε αυτές τις ερωτήσεις, Μοιρογνωμόνιο μπορώ να βοηθήσω.
Είναι ένα περιτύλιγμα χτισμένο πάνω από το Selenium Webdriver και έτσι παρέχει όλες τις δυνατότητες του Selenium μαζί με πολλές χρήσιμες προσθήκες. Προσφέρει:
Χαρακτηριστικά
Προσφέρει:
1) WaitForAngular
πώς να ρυθμίσετε ένα τείχος προστασίας σε ένα δίκτυο
Από την τεκμηρίωση:
' Δώστε εντολή στο WebDriver να περιμένει έως ότου ολοκληρωθεί η απόδοση του Angular και δεν έχει εκκρεμείς κλήσεις $ http ή $ timeout προτού συνεχίσετε. Σημειώστε ότι το Protractor εφαρμόζει αυτόματα αυτήν την εντολή πριν από κάθε ενέργεια του WebDriver. '
Αυτό σημαίνει ότι δεν χρειάζεται να προσθέσετε χειροκίνητες αναμονές στο σενάριό σας και το Protractor θα περιμένει αυτόματα για τη φόρτωση των στοιχείων ιστού και μόνο τότε θα εκτελέσει τα επόμενα βήματα.
δύο) Έχει τη δυνατότητα να εξάγει μια καθολική συνάρτηση στοιχείο , που παίρνει έναν εντοπιστή και θα επιστρέψει ένα ElementFinder. Αυτό το ElementFinder διαθέτει ένα σύνολο μεθόδων δράσης, όπως κλικ (), getText (), sendKeys () κ.λπ. Αυτός είναι ο πυρήνας του τρόπου αλληλεπίδρασης με το στοιχείο και λήψης πληροφοριών από αυτό.
Αυτή η καθολική συνάρτηση συμβάλλει στη μείωση της σύνταξης εντοπισμού στοιχείων. Ρίξτε μια ματιά στην ακόλουθη δήλωση για να εντοπίσετε το στοιχείο τόσο στο Selenium WebDriver όσο και στο Protractor:
Selenium Webdriver :
driver.findElement(By.cssSelector('css selector'));
Μοιρογνωμόνιο :
element(by.css('some-css'));
Η σύνταξη φαίνεται συμπαγής, έτσι δεν είναι;
3) Ορισμένες νέες στρατηγικές εντοπισμού και λειτουργίες που παρέχονται για τον εντοπισμό των γωνιακών στοιχείων είναι: By.binding, By.repeater, By.textarea, By.model, WebElement.all, WebElement.evaluate , και τα λοιπά.
Πώς μπορεί να με βοηθήσει το μοιρογνωμόνιο;
Ρίξτε μια ματιά στα ακόλουθα σημαντικά χαρακτηριστικά:
- Απλή σύνταξη για τη σύνταξη δοκιμαστικών περιπτώσεων
- Η δυνατότητα εκτέλεσης πολλαπλών προγραμμάτων περιήγησης ταυτόχρονα χρησιμοποιώντας το Selenium Grid
- Εντοπιστές ειδικής γωνίας
- Υποστήριξη για ανάπτυξη με γνώμονα τη συμπεριφορά, όπως το Jasmine / Mocha
- Δεν χρειάζεται να προσθέσετε ύπνους / αναμονές
- Υποστηριζόμενη ενσωμάτωση με Jenkins / Browser Stack / Grunt κ.λπ.
- Απαλλαγείτε από την αντιμετώπιση του ζητήματος συγχρονισμού σε ιστότοπους Angular JS
- Υποστήριξη πολλαπλών προγραμμάτων περιήγησης (Firefox, Chrome, Safari, Internet Explorer)
- Δυνατότητα εκτέλεσης των ίδιων σεναρίων σε προγράμματα περιήγησης για κινητά επίσης χωρίς την ανάγκη αλλαγής του κώδικα
Ποιο πλαίσιο για χρήση;
Υποστηρίζει δύο πλαίσια δοκιμής ανάπτυξης βάσει συμπεριφοράς (BDD) αμέσως:
- Γιασεμί: Γιασεμί είναι το προεπιλεγμένο πλαίσιο δοκιμής κατά την εγκατάσταση του Protractor. Θα χρησιμοποιήσουμε το Jasmine σε αυτό το άρθρο.
- Μόκα: Μόκα είναι ένα πλαίσιο δοκιμής JavaScript που εκτελείται στο Node.js. Εάν θέλετε να χρησιμοποιήσετε το Mocha ως πλαίσιο δοκιμής, θα πρέπει να το ρυθμίσετε με το μοιρογνωμόνιο σας και επίσης θα πρέπει να χρησιμοποιήσετε τη διεπαφή ανάπτυξης βάσει συμπεριφοράς και τις διεκδικήσεις Chai με τον Chai ως υπόσχεση (ανατρέξτε αυτός ο σύνδεσμος Για περισσότερες πληροφορίες ).
Πώς να κατεβάσετε και να ρυθμίσετε το μοιρογνωμόνιο
Δεδομένου ότι είναι ένα πρόγραμμα node.js, πρέπει να εγκαταστήσετε το node.js για να το εκτελέσετε. Μπορείτε να κατεβάσετε το Node.js από αυτήν τη διεύθυνση URL επιλέγοντας το λειτουργικό σύστημα: Λήψη Node.js
Με το node.js, παίρνετε επίσης Μοιρογνωμόνιο πάνω από την επιφάνεια της θάλασσας πακέτο, το οποίο μπορεί τώρα να χρησιμοποιηθεί για την εγκατάσταση του Protractor.
Τώρα που το node.js είναι εγκατεστημένο στον υπολογιστή σας, ανοίξτε τη γραμμή εντολών (cmd) και πατήστε την παρακάτω εντολή για να την εγκαταστήσετε παγκοσμίως:
npm install -g protractor
'-σολ' χρησιμοποιείται για την εγκατάσταση αυτού του εργαλείου παγκοσμίως. Καταργήστε το εάν δεν θέλετε να το εγκαταστήσετε παγκοσμίως. Αυτή η εντολή εγκαθιστά επίσης το Protractor API μαζί με έναν προεπιλεγμένο διακομιστή σεληνίου, πράγμα που σημαίνει ότι δεν χρειάζεται απαραίτητα να ξεκινήσετε έναν αυτόνομο διακομιστή.
Τώρα, πρέπει να εγκαταστήσουμε το διακομιστή σεληνίου και το ChromeDriver. Χρησιμοποιήστε την ακόλουθη εντολή (συνοδεύεται επίσης από το μοιρογνωμόνιο) σε cmd:
webdriver-manager update
Αυτό είναι το μόνο που χρειάζεται να ξεκινήσουμε με τη γραφή της πρώτης δοκιμαστικής περίπτωσης χρησιμοποιώντας αυτό το πλαίσιο. Εάν θέλετε, μπορείτε να εγκαταστήσετε οποιοδήποτε IDE / πρόγραμμα επεξεργασίας για να γράψετε τον κωδικό σας. Το Eclipse IDE είναι το δημοφιλές, αλλά υπάρχουν και μερικοί πιο δροσεροί συντάκτες που πρέπει να λάβετε υπόψη. Προσωπικά, προτιμώ το πρόγραμμα επεξεργασίας «Atom» για τη σύνταξη του κωδικού μου.
Είστε έτοιμοι να δημιουργήσετε την πρώτη σας δοκιμαστική θήκη;
Χρειάζεται 2 αρχεία για να τρέξει:
- Αρχείο διαμόρφωσης
- Αρχείο προδιαγραφών.
ο Αρχείο διαμόρφωσης είναι αυτό που λέει στο Protractor πού να βρει τα δοκιμαστικά αρχεία (προδιαγραφές) / ποιο πρόγραμμα περιήγησης να επιλέξει / ποιο πλαίσιο χρήσης (Jasmine / Mocha) / πού να μιλάς στο πρόγραμμα περιήγησης Selenium και άλλες διαμορφώσεις. Εάν δεν έχει οριστεί κάποια διαμόρφωση σε αρχεία διαμόρφωσης, θα χρησιμοποιεί προεπιλογές.
Το αρχείο προδιαγραφών είναι αυτό όπου γράφουμε τον πραγματικό μας κωδικό δοκιμής. Όλες οι δοκιμαστικές λειτουργικές ροές / ισχυρισμοί θα βρίσκονται σε αυτό το συγκεκριμένο αρχείο. Μπορεί να υπάρχουν πολλά αρχεία προδιαγραφών με βάση τον αριθμό των δοκιμαστικών περιπτώσεων, αλλά μόνο 1 αρχείο προδιαγραφών θα μπορεί να εκτελέσει ολόκληρη τη δοκιμαστική σουίτα πολλών προδιαγραφών.
Παράδειγμα ΔΟΚΙΜΗΣ ΠΕΡΙΠΤΩΣΗΣ:
Τώρα, θα γράψουμε μια απλή δοκιμαστική περίπτωση όπου θα μεταβούμε σε μια διεύθυνση URL και θα ελέγξουμε τον τίτλο της σελίδας.
Εδώ είναι τα βήματα:
- Δημιουργήστε έναν νέο φάκελο για τη δοκιμαστική σουίτα.
- Δημιουργήστε ένα νέο αρχείο με όνομα ως ' js «. (Οποιοδήποτε όνομα θα κάνει) Όλα τα αρχεία προδιαγραφών / διαμόρφωσης θα έχουν επέκταση« .js ».
- Δημιουργήστε ένα νέο αρχείο με το όνομα που καθορίζεται ως « js '.
//CheckTitleSpec.js describe('Protractor Demo', function() { it('to check the page title', function() { browser.ignoreSynchronization = true; browser.get('https://www.softwaretestinghelp.com/'); browser.driver.getTitle().then(function(pageTitle) { expect(pageTitle).toEqual('Software Testing Help - A Must Visit Software Testing Portal'); }); }); });
Τώρα, είμαστε όλοι έτοιμοι να ξεκινήσουμε με την κωδικοποίησή μας. Δείτε τον παρακάτω κώδικα του αρχείου «testCaseNameSpec.js».
Δείτε πώς φαίνεται το αρχείο διαμόρφωσης:
// conf.js exports.config = { framework: 'jasmine', capabilities: { browserName: 'chrome', }, specs: ('simpleTestSpec.js') };
Τώρα, ας σπάσουμε αυτά τα 2 αρχεία και δείτε πώς λειτουργεί.
# 1) Προδιαγραφές
- Ο χειρισμός όλων των εντολών επιπέδου προγράμματος περιήγησης θα γίνεται από το « πρόγραμμα περιήγησης «, Ένα παγκόσμιο που δημιουργήθηκε από την Protractor.
- Καθώς ακολουθούμε το πλαίσιο της Jasmine, περιγράψτε και ' το «Είναι οι συνταγές της Γιασεμί. Η περιγραφή θα περιέχει ολόκληρο το τέλος για να τερματίσει τη ροή της δοκιμαστικής σας θήκης, ενώ το «μπορεί να περιέχει μερικά από τα βήματα / σενάρια δοκιμής κ.λπ. Μπορείτε να έχετε πολλά» το Μπλοκ στο πρόγραμμά σας εάν το επιθυμείτε.
- browser.get είναι μια απλή σύνταξη Selenium που λέει στο Protractor να χτυπήσει μια συγκεκριμένη διεύθυνση URL στο πρόγραμμα περιήγησης.
- Καθώς ο ιστότοπος που προσπαθούμε να χτυπήσουμε είναι ένας μη γωνιακός ιστότοπος, ορίζουμε το αγνοήστε το συγχρονισμό ετικέτα στο ' αληθής 'Όπως εμφανίζεται στη γραμμή # 4. Εάν δεν κάνετε αυτήν την ετικέτα αληθινή, η δοκιμή σας θα αποτύχει με σφάλμα' Δεν ήταν δυνατή η εύρεση της γωνίας στη σελίδα '. Ο λόγος πίσω από αυτό είναι ότι το Protractor αναμένεται να συνεργαστεί με γωνιακούς ιστότοπους από προεπιλογή και εάν χρησιμοποιούμε το Protractor για την επικύρωση του μη γωνιακού ιστότοπου, πρέπει να το πούμε ρητώς στο Protractor. Ωστόσο, εάν εργάζεστε σε γωνιακούς ιστότοπους, δεν χρειάζεται να χρησιμοποιήσετε αυτήν τη δήλωση, καθώς το Protractor θα θεωρήσει από προεπιλογή την ιστοσελίδα ως γωνιακή.
- Η «προσδοκία» δεν είναι παρά ο ισχυρισμός όπου συγκρίνουμε τον τίτλο της ιστοσελίδας ώστε να ισούται με ορισμένα προκαθορισμένα δεδομένα. Θα συζητήσουμε λεπτομερώς περισσότερους ισχυρισμούς.
#δύο) conf.js
- Όπως συζητήθηκε προηγουμένως, το αρχείο διαμόρφωσης είναι αυτό που λέει στο Protractor τις βασικές λεπτομέρειες. Όπως εμφανίζεται στον κώδικα, το πλαίσιο είναι «Jasmine».
- Μέσα στην ενότητα δυνατοτήτων, ρυθμίζονται οι διαμορφώσεις του προγράμματος περιήγησης. Μπορείτε να ορίσετε το όνομα του προγράμματος περιήγησης, όπως Firefox / chrome κ.λπ. Μπορείτε επίσης να ορίσετε τις μέγιστες εμφανίσεις των προγραμμάτων περιήγησης, έτσι ώστε ταυτόχρονα να μπορείτε να εκτελείτε πολλές δοκιμαστικές περιπτώσεις σε διαφορετικά διαθέσιμα παράθυρα του προγράμματος περιήγησης.
- Στο ' διόπτρα Ενότητα, δίνουμε τη διαδρομή του αρχείου προδιαγραφών, δηλαδή ακριβώς όπου βρίσκεται το αρχείο προδιαγραφών σε σχέση με το αρχείο διαμόρφωσης.
- Υπάρχουν επίσης πολλές άλλες εντυπωσιακές δυνατότητες που μπορείτε να επισυνάψετε στο αρχείο διαμόρφωσής σας, όπως αναφορά / Λειτουργία onPrepare / χρονικό όριο κλπ. Θα καλύψουμε μερικά από αυτά σε αυτό το σεμινάριο.
Πώς να εκτελέσετε τις δοκιμαστικές σας περιπτώσεις;
Έχουμε γράψει τον κώδικα και τώρα το μόνο που χρειαζόμαστε είναι λίγο ώθηση για την εκτέλεση του κώδικα. Πατήστε την ακόλουθη εντολή σε cmd για να εκτελέσετε το πρόγραμμά σας:
protractor conf.js
Αυτή η εντολή θα ξεκινήσει να εκτελεί το διακομιστή σεληνίου ακολουθούμενη από την εκτέλεση του δοκιμαστικού σεναρίου. Μπορείτε να δείτε τα αρχεία καταγραφής στο ίδιο το cmd ή αν θέλετε, τα αρχεία καταγραφής μπορούν να καταγραφούν και σε ένα αρχείο .txt (μόνο προσθήκη >> textFileName.txt μετά την παραπάνω εντολή και τα αρχεία καταγραφής θα αποθηκευτούν στο αρχείο κειμένου που βρίσκεται στον ίδιο κατάλογο με το αρχείο διαμόρφωσης).
Θα ανοίξει ένα παράθυρο χρωμίου, όπου SoftwareTestingHelp.com Ο ιστότοπος πρέπει να ανοίξει. Η έξοδος θα ήταν «1 προδιαγραφή, 0 αποτυχία» όταν εκτελείτε τον κωδικό. Αυτό σημαίνει ότι είχαμε 1 μπλοκ, το οποίο εκτελέστηκε με 0 αποτυχίες.
Τώρα, σκεφτείτε το παρακάτω αρχείο προδιαγραφών όπου εκτελούμε ορισμένες ενέργειες σε μια ιστοσελίδα που βασίζεται στο AngularJS, ώστε να μπορείτε να δείτε το μοιρογνωμόνιο να παίρνει το Selenium όταν πρόκειται να δοκιμάσει τον ιστότοπο Angular:
πώς να κάνετε μια επίθεση ddos σε ένα ip
// spec.js describe('Code to interact with Angular JS elements', function() { it('should multiply two integers', function() { browser.get('http://juliemr.github.io/protractor-demo/'); element(by.model('first')).sendKeys(5); element(by.model('second')).sendKeys(5); element(by.model('operator')).click(); element(by.xpath('.//option(@value= 'MULTIPLICATION')')).click(); element(by.id('gobutton')).click(); expect(element(by.binding('latest')) .getText()).toEqual('10'); //Incorrect expectation expect(element(by.binding('latest')) .getText()).toEqual('25'); //Correct expectation }); });
Μπορείτε επίσης να χρησιμοποιήσετε το ίδιο conf.js για να εκτελέσετε αυτήν την προδιαγραφή. Απλώς φροντίστε να ενημερώσετε το όνομα αρχείου προδιαγραφών.
Τώρα, σε αυτό το αρχείο προδιαγραφών, παίζουμε με έναν γωνιακό ιστότοπο JS, ώστε να μπορείτε να δείτε τι ακριβώς μπορεί να προσφέρει το Protractor.
Εάν εκτελέσετε αυτό το αρχείο όπως κάναμε νωρίτερα, μια ιστοσελίδα θα ανοίξει με 2 πλαίσια κειμένου, ένα αναπτυσσόμενο μενού, ένα κουμπί και λίγα άλλα στοιχεία ιστού. Όπως ίσως έχετε ήδη μαντέψει, είναι μια σελίδα αριθμομηχανής. Δίνουμε 2 ακέραιοι ως είσοδο και εκτελούμε μια λειτουργία πολλαπλασιασμού.
Όπως ήδη συζητήσαμε, ένα από τα μεγαλύτερα πλεονεκτήματα της χρήσης αυτού του εργαλείου είναι οι μοναδικές τεχνικές του για τον εντοπισμό των γωνιακών στοιχείων. «By.model» είναι ένας τέτοιος τρόπος εντοπισμού στοιχείων. '.SendKeys ()' είναι συνηθισμένη σύνταξη σεληνίου για την αποστολή τιμών σε πλαίσια κειμένου και '.Κάντε κλικ()' χρησιμοποιείται για να κάνετε κλικ στα κουμπιά.
Όπως συζητήθηκε προηγουμένως, 'αναμένω' είναι ένας ισχυρισμός, που ζητά από το Protractor να καταγράψει το αποτέλεσμα του πολλαπλασιασμού των αριθμών και να το συγκρίνει με τα «10» και «25» διαδοχικά. Τα Απλά Μαθηματικά μας λένε ότι η έξοδος πρέπει να είναι «25» και ως εκ τούτου, ο πρώτος ισχυρισμός αποτυγχάνει και ο δεύτερος περνά.
Ως αποτέλεσμα, θα λάβετε « 1 Προδιαγραφή, 1 Αποτυχία Στα αρχεία καταγραφής όταν εκτελείτε τον κώδικα, ο οποίος αναμένεται.
Μερικά πιο δροσερά χαρακτηριστικά του Protractor
# 1) Ισχυρισμοί και σχολιασμοί
Οι ισχυρισμοί αποτελούν σημαντικό μέρος των σεναρίων αυτοματισμού. Οι σχολιασμοί είναι επίσης πολύ χρήσιμοι στην αποτελεσματική προσθήκη ετικετών σε ορισμένες μεθόδους σε μια τάξη για να έχουν ειδικό νόημα.
Παρέχει μια ποικιλία ισχυρισμών & σχολιασμών και επιπλέον, παρέχει επίσης τη δυνατότητα να δημιουργήσετε τους δικούς σας ισχυρισμούς.
Εξετάστε το παρακάτω παράδειγμα:
describe('Code to understand assertions/annotations', function() { beforeEach(function() { browser.get('http://juliemr.github.io/protractor-demo/'); }); afterEach(function() { browser.get('https://www.madewithangular.com/#/'); }); var multiplyNumbers = function(a, b) { element(by.model('first')).sendKeys(a); element(by.model('second')).sendKeys(b); element(by.model('operator')).click(); element(by.id('gobutton')).click(); }; it('should multiply two integers', function() { multiplyNumbers(2, 2); expect(element.all(by.repeater('result in memory')).count()).toEqual(2); multiplyNumbers(3, 3); expect(element.all(by.repeater('result in memory')).count()).toEqual(2); }); });
Στο παραπάνω παράδειγμα, χρησιμοποιούμε 2 σχολιασμούς, «BeforeEach» και «AfterEach» . Αυτοί οι σχολιασμοί είναι επίσης διαθέσιμοι στο TestNG (παραδοσιακό σελήνιο). Αυτοί οι σχολιασμοί διασφαλίζουν ότι ένα συγκεκριμένο κομμάτι κώδικα θα εκτελεστεί πριν / μετά την αντίστοιχη εκτέλεση του υπόλοιπου κώδικα.
Λοιπόν, εδώ θα πραγματοποιηθεί η εκτέλεση του κώδικα,
- Το μοιρογνωμόνιο θα φτάσει μέσα στο « πρινΚάθε «Μπλοκ πρώτα και θα χτυπήσει» http://juliemr.github.io/protractor-demo/ URL στο πρόγραμμα περιήγησης.
- Τώρα, η ροή θα μετακινηθεί στο 'it' μπλοκ και λειτουργία ' πολλαπλασιάστε τους αριθμούς » θα κληθεί, το οποίο, με τη σειρά του, θα εκτελέσει τις καθορισμένες ενέργειες σε αυτό, στέλνοντας τον έλεγχο πίσω στο σημείο που κλήθηκε η συνάρτηση.
- Επιτέλους, ο ισχυρισμός θα κάνει τη δουλειά του. Τώρα, εάν θέλουμε να αντιμετωπίσουμε πολλά στοιχεία ταυτόχρονα, μπορείτε να χρησιμοποιήσετε τη λειτουργία 'element.all' αυτού του εργαλείου. Θα προσδιορίσει όλα τα διαθέσιμα στοιχεία με τον καθορισμένο εντοπιστή (by.repeater σε αυτήν την περίπτωση). Εξαρτάται από εσάς τι θέλετε να κάνετε με τα αναγνωρισμένα στοιχεία. Σε αυτήν την περίπτωση, συγκρίνουμε το ιστορικό υπολογισμού με έναν δεδομένο αριθμό.
- Δεδομένου ότι, στον πρώτο ισχυρισμό, συγκρίνουμε τον αριθμό του ιστορικού υπολογισμού με το «2» παρόλο που πραγματοποιήσαμε τον υπολογισμό μόνο μία φορά, ο ισχυρισμός θα αποτύχει. Ο δεύτερος ισχυρισμός, ωστόσο, θα περάσει καθώς μετά τον δεύτερο υπολογισμό, ο αριθμός ιστορικού θα είναι «2».
Υπάρχουν πολλοί περισσότεροι διαθέσιμοι τύποι ισχυρισμών. Μερικά από τα οποία δίνονται παρακάτω:
α) Λάβετε κείμενο από ένα στοιχείο ιστού και συγκρίνετέ το με μια συγκεκριμένη τιμή:
element(by.locator('someLocator')).getText(text) .then(function() { expect(text).toEqual('someData'); expect(text).not.toEqual('someData'); expect(text).toContain('someOtherData'); });
β) Επαληθεύστε εάν ένα στοιχείο ιστού εμφανίζεται στη σελίδα ή όχι:
expect(browser.driver.findElement(by.locator(someLocator)) .isDisplayed()).toBe(true);
# 2) Διαχείριση πολλαπλών προγραμμάτων περιήγησης / παραθύρων / καρτελών
Μπορεί να υπάρχουν πολλές περιπτώσεις για το χειρισμό του προγράμματος περιήγησης. Μερικές από αυτές τις περιπτώσεις επισημαίνονται παρακάτω:
α) Ανοίγει μια νέα καρτέλα κάνοντας κλικ σε οποιονδήποτε σύνδεσμο
Μερικές φορές, όταν κάνετε κλικ σε οποιονδήποτε σύνδεσμο, ανοίγει μια νέα καρτέλα και πρέπει να πραγματοποιηθούν οι υπόλοιπες ενέργειες στο νέο παράθυρο. Σε αυτήν την περίπτωση, όταν γράφετε τον κώδικα στο σημείο που ανοίγει μια νέα καρτέλα, πρέπει να εφαρμόσετε το Window Handler χρησιμοποιώντας τον ακόλουθο τρόπο:
//Get all of the opened windows and store the count in handles browser.getAllWindowHandles().then(function(handles) { //Now switch the control to the newly opened window browser.switchTo().window(handles(1)).then(function() { //Write the code which needs to be executed in the new tab }); });
Αρχικά λάβετε μια μέτρηση όλων των διαθέσιμων παραθύρων και, στη συνέχεια, χρησιμοποιήστε την ευρετηρίαση για εναλλαγή ελέγχου μεταξύ των παραθύρων. Το αρχικό παράθυρο που ξεκίνησε το νέο παράθυρο θα έχει ευρετήριο 0, ενώ τα επόμενα παράθυρα θα έχουν αυξανόμενα ευρετήρια.
β) Άνοιγμα ενός εντελώς νέου προγράμματος περιήγησης με νέα συνεδρία
Όταν πρέπει να εκτελέσετε κάποιες ενέργειες σε ένα πρόγραμμα περιήγησης και πρέπει να κάνετε περαιτέρω ενέργειες σε μια διαφορετική περίοδο λειτουργίας του προγράμματος περιήγησης, πρέπει να χρησιμοποιήσουμε το forkNewDriverInstance . Σε αυτήν την περίπτωση, δημιουργούμε μια νέα παρουσία προγράμματος περιήγησης με νέο όνομα προγράμματος περιήγησης με τον ακόλουθο τρόπο:
describe('Code to understand assertions/annotations', function() { //Create a new browser instance var newBrowser = browser.forkNewDriverInstance(); it('should should open multiple browsers instances', function() { //Opens a URL in the 1st browser instance browser.get('http://juliemr.github.io/protractor-demo/'); //Opens a URL in the 2nd browser instance newBrowser.get('https://www.madewithangular.com/#/'); newBrowser.driver.quit(); }); });
γ) Εκτέλεση της δοκιμαστικής θήκης σε πολλά προγράμματα περιήγησης:
Η εκτέλεση της δοκιμαστικής θήκης σε 2 προγράμματα περιήγησης κάθε φορά είναι κάτι που μπορεί να κάνει το αρχείο διαμόρφωσης για εσάς. Απλώς προσθέστε τον παρακάτω κώδικα στο αρχείο διαμόρφωσης:
Μόλις εκτελέσετε αυτό το αρχείο διαμόρφωσης, θα δείτε τις δοκιμές να εκτελούνται ταυτόχρονα και στον Firefox και στο Chrome και τα αρχεία καταγραφής εκτέλεσης θα εμφανίζονται στη γραμμή εντολών ξεχωριστά.
// conf.js exports.config = { framework: 'jasmine', specs: ('SomeSpec.js'), multiCapabilities: ({ browserName: 'firefox' }, { browserName: 'chrome' }) }
# 3) Χρησιμοποιήστε αντικείμενα σελίδας για να κάνετε το πλαίσιο σας ακόμα καλύτερο
Αυτό το εργαλείο είναι καλό από μόνο του, αλλά γίνεται ανίκητο όταν συνδυάζεται με το Page Object Model (POM). Τα περισσότερα από τα μειονεκτήματά του (εάν υπάρχουν) ξεπεραστούν με το μοντέλο αντικειμένου σελίδας. Επιπλέον, το POM συμβάλλει επίσης στη διατήρηση του έργου σας με πιο δομημένο τρόπο.
Εάν δεν ξέρετε τι είναι το POM, μην ανησυχείτε. Το POM είναι ένας τρόπος για να διαχωρίσετε τη δοκιμαστική σας υπόθεση βάσει των σελίδων.
Πάρτε αυτό το παράδειγμα:
Υπάρχει ένας ιστότοπος αγορών. Η δοκιμαστική σας περίπτωση είναι να επιλέξετε ένα προϊόν, να το προσθέσετε στο καλάθι και μετά να το αγοράσετε.
Τώρα, υπάρχουν δύο τρόποι για να διαχειριστείτε τον κώδικα δοκιμαστικού σεναρίου για αυτό:
- Γράψτε μια απλή δοκιμαστική θήκη με όλους τους εντοπιστές στην ίδια σελίδα στην οποία έχει γραφτεί η λογική σας,
- Γράψτε όλη τη ροή της δοκιμαστικής υπόθεσης, τη λογική σας στο αρχείο προδιαγραφών σας και διαχωρίστε τους εντοπιστές σας και τα δεδομένα δοκιμής σε διαφορετικά αρχεία. Κάθε ιστοσελίδα θα έχει ένα αντίστοιχο αρχείο σελίδας .js. Με αυτόν τον τρόπο, ο κώδικάς σας θα είναι δομημένος και εάν υπάρχει άλλη περίπτωση δοκιμής που απαιτεί τον ίδιο εντοπιστή, δεν χρειάζεται να γράψετε ξανά αυτούς τους εντοπιστές, απλώς εισαγάγετε αυτό το αρχείο εντοπισμού και χρησιμοποιήστε το σύμφωνα με τις ανάγκες σας.
Η διατήρηση των δοκιμαστικών σας περιπτώσεων μπορεί να είναι πραγματικός πόνος. Εάν χρησιμοποιείτε POM, ο κώδικάς σας θα είναι πολύ πιο δομημένος.
καλύτερο εργαλείο αφαίρεσης κακόβουλου λογισμικού για τα Windows 10
Ακολουθεί ένα παράδειγμα χρήσης του μοντέλου αντικειμένου σελίδας:
Αυτή είναι η ροή στο παραπάνω στιγμιότυπο:
- Υπάρχει μια δοκιμαστική θήκη που αγοράζει φορητό υπολογιστή. Ο κωδικός για τη ροή και τη λογική θα βρίσκεται στο storeLaptopSpec.js.
- Όλες οι σελίδες που συναντώνται για την αγορά του φορητού υπολογιστή θα έχουν αρχείο 1 .js με κατάλληλο τίτλο. Όλα τα στοιχεία που απαιτούνται για την αγορά του φορητού υπολογιστή, οι εντοπιστές τους θα βρίσκονται μέσα στο αντίστοιχο αρχείο σελίδας.
- Τα δεδομένα που απαιτούνται για αυτήν τη δοκιμαστική περίπτωση μπορούν να αποθηκευτούν στον φάκελο TestData είτε σε μορφή «.json» είτε σε μορφή excel.
- Μόλις τελειώσετε με τις σελίδες και τους εντοπιστές, απλώς εισαγάγετε αυτά τα αρχεία στο αρχείο προδιαγραφών σας για να χρησιμοποιήσετε τα δεδομένα εντοπισμού / δοκιμής και είστε έτοιμοι με τη δοκιμαστική σας υπόθεση.
# 4) Αναφορά
Το NPM (Διαχειριστής πακέτων κόμβων) παρέχει διάφορα πακέτα αναφοράς, με τα οποία μπορεί να καταγραφεί το στιγμιότυπο οθόνης κάθε βήματος δοκιμής και επίσης, μόλις ολοκληρωθεί η δοκιμαστική εκτέλεση, θα δημιουργήσει μια αναφορά HTML για εσάς. Το μόνο που έχετε να κάνετε είναι να εγκαταστήσετε αυτά τα πακέτα ανοίγοντας μια γραμμή εντολών και πατώντας τις παρακάτω εντολές:
npm install -g protractor-jasmine2-html-reporter
npm install protractor-jasmine2-screenshot-reporter --save-dev
Μόλις εγκατασταθούν αυτά τα πακέτα, κάθε φορά που εκτελείτε το αρχείο διαμόρφωσης, θα αποθηκεύονται όλα τα στιγμιότυπα οθόνης των δοκιμαστικών σας περιπτώσεων και επίσης θα δημιουργηθεί μια αναφορά HTML που θα εμφανίζει το αποτέλεσμα επιτυχίας / αποτυχίας της δοκιμαστικής θήκης.
# 5) Ενσωματώστε με άλλα ισχυρά εργαλεία, όπως το Git / Jenkins / Browserstack / Grunt
Υπάρχουν πολλά εργαλεία διαθέσιμα στην αγορά για να σας βοηθήσουν να κάνετε τις δοκιμαστικές σας περιπτώσεις ακόμη καλύτερες. Το Git / Jenkins / BrowserStack / Grunt είναι μερικά τέτοια εργαλεία που προσθέτουν σημαντική αξία στα κανονικά σενάρια δοκιμής Protractor. Και το καλύτερο είναι ότι δεν χρειάζεται να αγγίξετε το αρχείο προδιαγραφών σας για να ενσωματώσετε το μοιρογνωμόνιο με οποιοδήποτε από αυτά τα εργαλεία. Είναι το αρχείο διαμόρφωσής σας, το οποίο θα σας πάρει όλα αυτά τα πράγματα για εσάς.
Πηγαίνω είναι ένα πολύ ισχυρό εργαλείο ελέγχου έκδοσης. Είναι πάντα μια βέλτιστη πρακτική να διατηρείτε τον κωδικό σας στο Git εάν εμπλέκονται πολλοί προγραμματιστές.
Τζένκινς είναι ένα εργαλείο συνεχούς ενοποίησης με το οποίο μπορείτε να προγραμματίσετε τις δοκιμαστικές σας περιπτώσεις και να το εκτελέσετε σύμφωνα με τις ανάγκες σας. Τα σενάρια μοιρογνωμόνων μπορούν επίσης να διαμορφωθούν με το Jenkins. Η καλύτερη χρήση της εκτέλεσης των δοκιμαστικών σας περιπτώσεων στο Jenkins είναι ότι είναι πολύ γρήγορο και επίσης μπορείτε να εκτελέσετε πολλές δοκιμαστικές θήκες κάθε φορά.
Πρόγραμμα περιήγησης είναι ένα εργαλείο δοκιμών μεταξύ προγραμμάτων περιήγησης που μπορεί επίσης να χρησιμοποιηθεί για τη δοκιμή των εφαρμογών σας σε διαφορετικά προγράμματα περιήγησης. Μπορεί επίσης να ενσωματωθεί στο Protractor προσθέτοντας τα διαπιστευτήρια του προγράμματος περιήγησης Stack στο αρχείο ρυθμίσεων.
Εδαφος είναι ένας δρομέας εργασιών JavaScript. Σας παρέχει τη δυνατότητα να εκτελείτε πολλές εργασίες για εσάς. Η απροσδόκητη κατάσταση είναι ότι υπάρχουν περισσότερες από 4000 εργασίες και μπορείτε να δημιουργήσετε ακόμη περισσότερες εργασίες σύμφωνα με τις απαιτήσεις σας. Ακολουθούν μερικές από τις σημαντικές εργασίες καθημερινής χρήσης για τις οποίες μπορούμε να χρησιμοποιήσουμε το Grunt για:
- Καταγράψτε όλες τις βέλτιστες πρακτικές κωδικοποίησης και ενημερώστε αμέσως κάθε φορά που παραβιάζετε οποιοδήποτε από αυτά.
- Για να δημιουργήσετε πολλά αρχεία προδιαγραφών κατά το χρόνο εκτέλεσης. Για παράδειγμα , εάν υπάρχει κάποια δοκιμαστική περίπτωση που θέλετε να εκτελέσετε πολλές φορές (από 1 έως οποιονδήποτε αριθμό). Αυτό μπορεί να φαίνεται περιττό σε αυτό το σημείο, αλλά σκεφτείτε να εκτελέσετε οποιαδήποτε ροή αγοράς ιστότοπου αγορών που θα εκτελείται σε κάθε διαθέσιμη χώρα. Θα ήταν κουραστικό να δημιουργήσετε πολλαπλές προδιαγραφές χειροκίνητα. Λοιπόν, αφήστε το Grunt να το κάνει αυτό για εσάς.
- Η δυνατότητα ρολογιού. Γράφετε μια δοκιμαστική θήκη και κάθε φορά που αποθηκεύετε τον κωδικό σας αφού κάνετε οποιαδήποτε αλλαγή σε αυτήν, θέλετε η δοκιμαστική θήκη σας να τρέξει, ο Grunt το έχει.
- Συνδυάζοντας πολλά αρχεία.
Απλά δοκιμάστε το και θα το λατρέψετε.
συμπέρασμα
Μπορείτε να κάνετε το Selenium να λειτουργεί σαν μοιρογνωμόνιο, αλλά γιατί να ανακαλύψετε ξανά τον τροχό; Εάν η Google έχει καταβάλει τόση προσπάθεια για να κάνει το Protractor να λειτουργεί σαν γοητεία, ας το χρησιμοποιήσουμε στο έπακρο. Τουλάχιστον για τους ιστότοπους AngularJS, θα κάνει τη ζωή σας πολύ πιο εύκολη.
Επίσης, αυτό το άρθρο δεν αφορά μόνο το μοιρογνωμόνιο. Υπάρχει ένας μεγάλος κόσμος Protractor εκεί έξω και υπάρχουν εκατοντάδες πακέτα διαθέσιμα στην αγορά που προσφέρονται από την NPM για να προσθέσετε περισσότερες δυνατότητες στη δοκιμή σας εκτός από απλά σενάρια δοκιμών. Μη διστάσετε να χρησιμοποιήσετε αυτά τα πακέτα και να τα κάνετε ακόμα καλύτερα.
Σχετικά με τον Συγγραφέα: Αυτή είναι μια θέση επισκεπτών από τον Deshansh. Εργάζεται ως Μηχανικός Ανάπτυξης Λογισμικού σε Τεστ με έναν από τους κορυφαίους MNC. Διαθέτει εκτεταμένη εμπειρία στη δοκιμή αυτοματισμού Selenium και Protractor.
Το επερχόμενο σεμινάριό μας θα σας βοηθήσει να καθαρίσετε οποιαδήποτε συνέντευξη AngularJS με επιτυχία.
Εκπαιδευτικό πρόγραμμα PREV | ΕΠΟΜΕΝΟ Φροντιστήριο
Συνιστώμενη ανάγνωση
- Τα καλύτερα εργαλεία δοκιμής λογισμικού 2021 (QA Test Automation Tools)
- Testing Primer eBook Λήψη
- Έλεγχος αυτοματισμού με χρήση εργαλείου αγγουριού και σεληνίου - Σελήνιο σεμινάριο # 30
- Εγκατάσταση εφαρμογών και προετοιμασία τους για δοκιμές Appium
- Load Testing Using LoadUI - Ένα δωρεάν και ανοιχτού κώδικα εργαλείο δοκιμής φόρτωσης
- Ενσωμάτωση σεληνίου με JMeter
- Φόρτωση δοκιμής με HP LoadRunner Tutorials
- Οδηγός εργαλείων δοκιμής προσβασιμότητας WAVE