Για να καταλάβετε πώς να εκτελείτε παράλληλα σενάρια, ας καταλάβουμε πρώτα
Γιατί χρειαζόμαστε το Session Handling;
Κατά την εκτέλεση της δοκιμής, το Selenium WebDriver πρέπει να αλληλεπιδρά με το πρόγραμμα περιήγησης όλη την ώρα για να εκτελεί συγκεκριμένες εντολές. Κατά τη στιγμή της εκτέλεσης, είναι επίσης πιθανό, πριν ολοκληρωθεί η τρέχουσα εκτέλεση, κάποιος άλλος να ξεκινήσει την εκτέλεση άλλου σεναρίου, στον ίδιο υπολογιστή και στον ίδιο τύπο προγράμματος περιήγησης.
Σε μια τέτοια κατάσταση, χρειαζόμαστε έναν μηχανισμό με τον οποίο οι δύο διαφορετικές εκτελέσεις μας δεν θα πρέπει να αλληλεπικαλύπτονται μεταξύ τους. Αυτό μπορεί να επιτευχθεί χρησιμοποιώντας το Session Handling στο Selenium.
Πώς να επιτύχετε το Session Handling στο Selenium WebDriver;
Εάν ελέγξετε τον πηγαίο κώδικα του Selenium WebDriver, θα βρείτε μια μεταβλητή που ονομάζεται «sessionId». Κάθε φορά που δημιουργούμε μια νέα παρουσία ενός αντικειμένου WebDriver, θα δημιουργείται και θα επισυνάπτεται ένα νέο "sessionId" με το συγκεκριμένο πρόγραμμα οδήγησης Firefox / Chrome / IE ().
Έτσι, οτιδήποτε κάνουμε μετά από αυτό θα εκτελεστεί μόνο στη συγκεκριμένη περίοδο λειτουργίας του προγράμματος περιήγησης Firefox.
Επειδή πρόκειται για ενσωματωμένη λειτουργικότητα, δεν υπάρχει ρητή ανάγκη εκχώρησης του αναγνωριστικού περιόδου σύνδεσης
Παράδειγμα κώδικα: Εδώ θα δημιουργηθούν δύο διαφορετικές περίοδοι σύνδεσης για δύο διαφορετικά WebDriver.
εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.firefox.FirefoxDriver;δημόσια τάξη SessionHandling {δημόσιο στατικό κενό (συμβολοσειρά… χορδές) {// Πρώτη συνεδρία του WebDriverΠρόγραμμα οδήγησης WebDriver = νέο FirefoxDriver ();// Goto γκουρού99 ιστότοποςdriver.get ("http://demo.guru99.com/V4/");// Δεύτερη περίοδος λειτουργίας του WebDriverWebDriver driver2 = νέο FirefoxDriver ();// Goto γκουρού99 ιστότοποςdriver2.get ("http://demo.guru99.com/V4/");}}
Πώς να εκτελέσετε παράλληλες δοκιμές με σελήνιο
Υπάρχουν καταστάσεις όπου θέλετε να εκτελέσετε πολλές δοκιμές ταυτόχρονα.
Σε τέτοιες περιπτώσεις, μπορεί κανείς να χρησιμοποιήσει το χαρακτηριστικό "παράλληλο"
Το παράλληλο χαρακτηριστικό της ετικέτας σουίτας μπορεί να δεχτεί τέσσερις τιμές:
δοκιμές | Όλες οι δοκιμαστικές περιπτώσεις εντός της ετικέτας |
τάξεις | Όλες οι δοκιμαστικές περιπτώσεις σε μια κλάση Java θα εκτελούνται παράλληλα |
μεθόδους | Όλες οι μέθοδοι με το σχολιασμό @Test θα εκτελούνται παράλληλα. |
περιπτώσεις | Οι δοκιμαστικές περιπτώσεις στην ίδια περίπτωση θα εκτελέσουν παράλληλα, αλλά δύο μέθοδοι δύο διαφορετικών παρουσιών θα εκτελούνται σε διαφορετικό νήμα. |
Το χαρακτηριστικό νήμα-αριθμού σας επιτρέπει να καθορίσετε πόσα νήματα πρέπει να εκχωρηθούν για αυτήν την εκτέλεση.
Πλήρες παράδειγμα: Σε αυτό το παράδειγμα, τρεις δοκιμαστικές περιπτώσεις θα εκτελούνται παράλληλα και θα συμπληρώνουν τα δεδομένα σύνδεσης στο http://demo.guru99.com
Το πλήρες έργο θα μοιάζει με:
TestGuru99MultipleSession.java
εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.chrome.ChromeDriver;εισαγωγή org.testng.annotations.Test;δημόσια τάξη TestGuru99MultipleSession {@Δοκιμήδημόσια άκυρη εκτέλεσηSessionOne () {// Πρώτη συνεδρία του WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Πρόγραμμα οδήγησης WebDriver = νέο ChromeDriver ();// Goto γκουρού99 ιστότοποςdriver.get ("http://demo.guru99.com/V4/");// βρείτε το πλαίσιο κειμένου ονόματος χρήστη και συμπληρώστε τοdriver.findElement (By.name ("uid")). sendKeys ("Πρόγραμμα οδήγησης 1");}@Δοκιμήpublic void executeSessionTwo () {)// Δεύτερη περίοδος λειτουργίας του WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Πρόγραμμα οδήγησης WebDriver = νέο ChromeDriver ();// Goto γκουρού99 ιστότοποςdriver.get ("http://demo.guru99.com/V4/");// βρείτε το πλαίσιο κειμένου ονόματος χρήστη και συμπληρώστε τοdriver.findElement (By.name ("uid")). sendKeys ("Πρόγραμμα οδήγησης 2");}@Δοκιμήδημόσια άκυρη εκτέλεσηSessionThree () {// Τρίτη συνεδρία του WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Πρόγραμμα οδήγησης WebDriver = νέο ChromeDriver ();// Goto γκουρού99 ιστότοποςdriver.get ("http://demo.guru99.com/V4/");// βρείτε το πλαίσιο κειμένου ονόματος χρήστη και συμπληρώστε τοdriver.findElement (By.name ("uid")). sendKeys ("Πρόγραμμα οδήγησης 3");}}
TestNG.XML
xml version = "1.0" encoding = "UTF-8"?><τάξεις>
Διάταξη δοκιμής και εξάρτηση
Μπορείτε να ορίσετε τη σειρά και την εξάρτηση της εκτέλεσης δοκιμής
Ας υποθέσουμε ότι έχετε δύο περιπτώσεις δοκιμής, «testGuru99TC1» και «testGuru99TC2» και θέλετε να εκτελέσετε τη δοκιμαστική υπόθεση «testGuru99TC2» πριν από το «testGuru99TC1». Σε αυτήν την περίπτωση θα χρησιμοποιήσουμε το χαρακτηριστικό 'εξαρτάται από την μέθοδο' για να κάνουμε την εξάρτηση και τη σειρά εκτέλεσης.
xml version = "1.0" encoding = "UTF-8"?><τάξεις>
Περίληψη
- Δημιουργείται ένα νέο sessionID για μια νέα παρουσία του WebDriver.
- Μια συνεδρία θα δεσμευτεί με ένα συγκεκριμένο πρόγραμμα περιήγησης.
- Χρησιμοποιώντας το νήμα χαρακτηριστικών και παράλληλα, εκτελείτε τα σενάρια σας παράλληλα.
- Μπορείτε να χρησιμοποιήσετε την εξάρτηση χαρακτηριστικών για να ορίσετε τη σειρά δοκιμής εκτέλεσης