Παράλληλη εκτέλεση σε Selenium
Για να κατανοήσουμε πώς να εκτελούμε σενάρια παράλληλα, ας καταλάβουμε πρώτα
Γιατί χρειαζόμαστε Session Handling;
Κατά την εκτέλεση της δοκιμής, το Selenium Το WebDriver πρέπει να αλληλεπιδρά με το πρόγραμμα περιήγησης όλη την ώρα για να εκτελέσει δεδομένες εντολές. Κατά τη στιγμή της εκτέλεσης, είναι επίσης πιθανό, πριν ολοκληρωθεί η τρέχουσα εκτέλεση, κάποιος άλλος να ξεκινήσει την εκτέλεση ενός άλλου σεναρίου, στον ίδιο υπολογιστή και στον ίδιο τύπο προγράμματος περιήγησης.
Σε μια τέτοια κατάσταση, χρειαζόμαστε έναν μηχανισμό με τον οποίο οι δύο διαφορετικές εκτελέσεις μας δεν θα πρέπει να επικαλύπτονται μεταξύ τους. Αυτό μπορεί να επιτευχθεί χρησιμοποιώντας το Session Handling in Selenium.
Πώς να επιτύχετε το Session Handling in Selenium WebDriver;
Εάν ελέγξετε τον πηγαίο κώδικα του Selenium WebDriver, θα βρείτε μια μεταβλητή που ονομάζεται 'sessionId'. Κάθε φορά που δημιουργούμε μια νέα παρουσία ενός αντικειμένου WebDriver, ένα νέο «sessionId» θα δημιουργηθεί και θα επισυναφθεί με αυτό το συγκεκριμένο FirefoxΠρόγραμμα οδήγησης /Chrome/IE ().
Οπότε οτιδήποτε κάνουμε μετά από αυτό θα εκτελεστεί μόνο σε αυτό το συγκεκριμένο Firefox συνεδρία προγράμματος περιήγησης.
Καθώς αυτή είναι μια ενσωματωμένη λειτουργία, δεν υπάρχει ρητή ανάγκη εκχώρησης του αναγνωριστικού συνεδρίας
Code Παράδειγμα: Εδώ θα δημιουργηθούν δύο διαφορετικές συνεδρίες για δύο διαφορετικά 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("https://demo.guru99.com/V4/");
//Second session of WebDriver
WebDriver driver2 = new FirefoxDriver();
//Goto guru99 site
driver2.get("https://demo.guru99.com/V4/");
}
}
Πώς να εκτελέσετε Παράλληλες Δοκιμές με Selenium
Υπάρχουν περιπτώσεις όπου θέλετε να εκτελέσετε πολλές δοκιμές ταυτόχρονα.
Σε τέτοιες περιπτώσεις, μπορεί κανείς να χρησιμοποιήσει το χαρακτηριστικό «παράλληλο».
Το παράλληλο χαρακτηριστικό της ετικέτας σουίτας μπορεί να δεχθεί τέσσερις τιμές:
| δοκιμές | Όλες οι δοκιμές μέσα ετικέτα του Δοκιμές xml θα τρέξει παράλληλα. |
| τάξεις | Όλες οι δοκιμές μέσα σε α Java η τάξη θα τρέχει παράλληλα |
| μέθοδοι | Όλες οι μέθοδοι με σχολιασμό @Test θα εκτελούνται παράλληλα. |
| περιπτώσεις | Οι δοκιμαστικές περιπτώσεις στην ίδια παρουσία θα εκτελούνται παράλληλα, αλλά δύο μέθοδοι δύο διαφορετικών περιπτώσεων θα εκτελούνται σε διαφορετικό νήμα. |
Το χαρακτηριστικό thread-count σάς επιτρέπει να καθορίσετε πόσα νήματα πρέπει να εκχωρηθούν για αυτήν την εκτέλεση.
Πλήρες παράδειγμα: Σε αυτό το Παράδειγμα, τρεις περιπτώσεις δοκιμής θα εκτελούνται παράλληλα και θα συμπληρώνουν τα δεδομένα σύνδεσης https://demo.guru99.com/
Το ολοκληρωμένο έργο θα μοιάζει με αυτό:
ΔοκιμήGuru99MultipleSession.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("https://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("https://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("https://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' και 'δοκιμήGuru99TC2' και θέλετε να εκτελέσετε την δοκιμαστική περίπτωση 'testGuru99TC2' πριν από τη 'δοκιμή'Guru99TC1'. Σε αυτήν την περίπτωση, θα χρησιμοποιήσουμε το χαρακτηριστικό '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.
- Μία περίοδος σύνδεσης θα συνδεθεί με ένα συγκεκριμένο πρόγραμμα περιήγησης.
- Χρησιμοποιώντας το χαρακτηριστικό νήμα και το παράλληλο, εκτελείτε τα σενάρια σας παράλληλα.
- Μπορείτε να χρησιμοποιήσετε την εξάρτηση χαρακτηριστικών για να ορίσετε τη σειρά δοκιμής εκτέλεσης





