Παράλληλη εκτέλεση σε Selenium: Χειρισμός συνεδρίας & TestNG Εξάρτηση
Για να κατανοήσουμε πώς να εκτελούμε σενάρια παράλληλα, ας καταλάβουμε πρώτα
Γιατί χρειαζόμαστε Session Handling;
Κατά την εκτέλεση της δοκιμής, το Selenium Το WebDriver πρέπει να αλληλεπιδρά με το πρόγραμμα περιήγησης όλη την ώρα για να εκτελέσει δεδομένες εντολές. Κατά τη στιγμή της εκτέλεσης, είναι επίσης πιθανό, πριν ολοκληρωθεί η τρέχουσα εκτέλεση, κάποιος άλλος να ξεκινήσει την εκτέλεση ενός άλλου σεναρίου, στον ίδιο υπολογιστή και στον ίδιο τύπο προγράμματος περιήγησης.
Σε μια τέτοια κατάσταση, χρειαζόμαστε έναν μηχανισμό με τον οποίο οι δύο διαφορετικές εκτελέσεις μας δεν θα πρέπει να επικαλύπτονται μεταξύ τους. Αυτό μπορεί να επιτευχθεί χρησιμοποιώντας το Session Handling in Selenium.
Πώς να επιτύχετε το Session Handling in Selenium WebDriver;
Εάν ελέγξετε τον πηγαίο κώδικα του Selenium WebDriver, θα βρείτε μια μεταβλητή που ονομάζεται 'sessionId'. Κάθε φορά που δημιουργούμε μια νέα παρουσία ενός αντικειμένου WebDriver, ένα νέο «sessionId» θα δημιουργηθεί και θα επισυναφθεί με αυτό το συγκεκριμένο FirefoxΠρόγραμμα οδήγησης /Chrome/IE ().
Οπότε οτιδήποτε κάνουμε μετά από αυτό θα εκτελεστεί μόνο σε αυτό το συγκεκριμένο Firefox συνεδρία προγράμματος περιήγησης.
Καθώς αυτή είναι μια ενσωματωμένη λειτουργία, δεν υπάρχει ρητή ανάγκη εκχώρησης του αναγνωριστικού συνεδρίας
Παράδειγμα κώδικα: Εδώ θα δημιουργηθούν δύο διαφορετικές συνεδρίες για δύο διαφορετικά WebDriver.
import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class SessionHandling { public static void main(String...strings ){ //First session of WebDriver WebDriver driver = new FirefoxDriver(); //Goto guru99 site driver.get("http://demo.guru99.com/V4/"); //Second session of WebDriver WebDriver driver2 = new FirefoxDriver(); //Goto guru99 site driver2.get("http://demo.guru99.com/V4/"); } }
Πώς να εκτελέσετε Παράλληλες Δοκιμές με Selenium
Υπάρχουν περιπτώσεις όπου θέλετε να εκτελέσετε πολλές δοκιμές ταυτόχρονα.
Σε τέτοιες περιπτώσεις, μπορεί κανείς να χρησιμοποιήσει το χαρακτηριστικό «παράλληλο».
Το παράλληλο χαρακτηριστικό της ετικέτας σουίτας μπορεί να δεχθεί τέσσερις τιμές:
δοκιμές | Όλες οι δοκιμές μέσα ετικέτα του Δοκιμές xml θα τρέξει παράλληλα. |
τάξεις | Όλες οι δοκιμές μέσα σε α Java η τάξη θα τρέχει παράλληλα |
μέθοδοι | Όλες οι μέθοδοι με σχολιασμό @Test θα εκτελούνται παράλληλα. |
περιπτώσεις | Οι δοκιμαστικές περιπτώσεις στην ίδια παρουσία θα εκτελούνται παράλληλα, αλλά δύο μέθοδοι δύο διαφορετικών περιπτώσεων θα εκτελούνται σε διαφορετικό νήμα. |
Το χαρακτηριστικό thread-count σάς επιτρέπει να καθορίσετε πόσα νήματα πρέπει να εκχωρηθούν για αυτήν την εκτέλεση.
Πλήρες παράδειγμα: Σε αυτό το Παράδειγμα, τρεις περιπτώσεις δοκιμής θα εκτελούνται παράλληλα και θα συμπληρώνουν τα δεδομένα σύνδεσης http://demo.guru99.com/
Το ολοκληρωμένο έργο θα μοιάζει με αυτό:
TestGuru99MultipleSession.java
import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.Test; public class TestGuru99MultipleSession { @Test public void executSessionOne(){ //First session of WebDriver System.setProperty("webdriver.chrome.driver","chromedriver.exe"); WebDriver driver = new ChromeDriver(); //Goto guru99 site driver.get("http://demo.guru99.com/V4/"); //find user name text box and fill it driver.findElement(By.name("uid")).sendKeys("Driver 1"); } @Test public void executeSessionTwo(){ //Second session of WebDriver System.setProperty("webdriver.chrome.driver","chromedriver.exe"); WebDriver driver = new ChromeDriver(); //Goto guru99 site driver.get("http://demo.guru99.com/V4/"); //find user name text box and fill it driver.findElement(By.name("uid")).sendKeys("Driver 2"); } @Test public void executSessionThree(){ //Third session of WebDriver System.setProperty("webdriver.chrome.driver","chromedriver.exe"); WebDriver driver = new ChromeDriver(); //Goto guru99 site driver.get("http://demo.guru99.com/V4/"); //find user name text box and fill it driver.findElement(By.name("uid")).sendKeys("Driver 3"); } }
TestNG.XML
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="TestSuite" thread-count="3" parallel="methods" > <test name="testGuru"> <classes> <class name="TestGuru99MultipleSession"> </class> </classes> </test> </suite>
Σειρά και εξάρτηση υπόθεσης δοκιμής
Μπορείτε να ορίσετε τη σειρά και την εξάρτηση του Δοκιμαστική θήκη εκτέλεση.
Ας υποθέσουμε ότι έχετε δύο περιπτώσεις δοκιμών , "testGuru99TC1" και "testGuru99TC2" και θέλετε να εκτελέσετε δοκιμαστική περίπτωση "testGuru99TC2" πριν από το "testGuru99TC1". Σε αυτήν την περίπτωση, θα χρησιμοποιήσουμε το χαρακτηριστικό 'dependsOnMethods' για να καθορίσουμε την εξάρτηση και τη σειρά εκτέλεσης.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="TestSuite" thread-count="3" parallel="methods" > <test name="testGuru"> <classes> <class name="TestGuru99MultipleSession"> <include value="testGuru99TC1" dependsOnMethods=" testGuru99TC2"/> <include value="testGuru99TC2"/> </class> </classes> </test> </suite>
Σύνοψη
- Δημιουργείται ένα νέο αναγνωριστικό συνεδρίας για μια νέα παρουσία του WebDriver.
- Μία περίοδος σύνδεσης θα συνδεθεί με ένα συγκεκριμένο πρόγραμμα περιήγησης.
- Χρησιμοποιώντας το χαρακτηριστικό νήμα και το παράλληλο, εκτελείτε τα σενάρια σας παράλληλα.
- Μπορείτε να χρησιμοποιήσετε την εξάρτηση χαρακτηριστικών για να ορίσετε τη σειρά δοκιμής εκτέλεσης