Παράλληλη εκτέλεση σε Selenium: Χειρισμός συνεδρίας & TestNG Εξάρτηση

Για να κατανοήσουμε πώς να εκτελούμε σενάρια παράλληλα, ας καταλάβουμε πρώτα

Γιατί χρειαζόμαστε Session Handling;

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

Χειρισμός συνεδρίας

Σε μια τέτοια κατάσταση, χρειαζόμαστε έναν μηχανισμό με τον οποίο οι δύο διαφορετικές εκτελέσεις μας δεν θα πρέπει να επικαλύπτονται μεταξύ τους. Αυτό μπορεί να επιτευχθεί χρησιμοποιώντας το Session Handling in Selenium.

Πώς να επιτύχετε το Session Handling in Selenium WebDriver;

Εάν ελέγξετε τον πηγαίο κώδικα του Selenium WebDriver, θα βρείτε μια μεταβλητή που ονομάζεται 'sessionId'. Κάθε φορά που δημιουργούμε μια νέα παρουσία ενός αντικειμένου WebDriver, ένα νέο «sessionId» θα δημιουργηθεί και θα επισυναφθεί με αυτό το συγκεκριμένο FirefoxΠρόγραμμα οδήγησης /Chrome/IE ().

Επίτευξη χειρισμού συνεδρίας Selenium Πρόγραμμα οδήγησης Web

Οπότε οτιδήποτε κάνουμε μετά από αυτό θα εκτελεστεί μόνο σε αυτό το συγκεκριμένο Firefox συνεδρία προγράμματος περιήγησης.

Επίτευξη χειρισμού συνεδρίας Selenium Πρόγραμμα οδήγησης Web

Καθώς αυτή είναι μια ενσωματωμένη λειτουργία, δεν υπάρχει ρητή ανάγκη εκχώρησης του αναγνωριστικού συνεδρίας

Παράδειγμα κώδικα: Εδώ θα δημιουργηθούν δύο διαφορετικές συνεδρίες για δύο διαφορετικά 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

Υπάρχουν περιπτώσεις όπου θέλετε να εκτελέσετε πολλές δοκιμές ταυτόχρονα.

Σε τέτοιες περιπτώσεις, μπορεί κανείς να χρησιμοποιήσει το χαρακτηριστικό «παράλληλο».

Εκτελέστε Παράλληλες Δοκιμές με Selenium

Το παράλληλο χαρακτηριστικό της ετικέτας σουίτας μπορεί να δεχθεί τέσσερις τιμές:

δοκιμές Όλες οι δοκιμές μέσα ετικέτα του Δοκιμές xml θα τρέξει παράλληλα.
τάξεις Όλες οι δοκιμές μέσα σε α Java η τάξη θα τρέχει παράλληλα
μέθοδοι Όλες οι μέθοδοι με σχολιασμό @Test θα εκτελούνται παράλληλα.
περιπτώσεις Οι δοκιμαστικές περιπτώσεις στην ίδια παρουσία θα εκτελούνται παράλληλα, αλλά δύο μέθοδοι δύο διαφορετικών περιπτώσεων θα εκτελούνται σε διαφορετικό νήμα.

Το χαρακτηριστικό thread-count σάς επιτρέπει να καθορίσετε πόσα νήματα πρέπει να εκχωρηθούν για αυτήν την εκτέλεση.

Πλήρες παράδειγμα: Σε αυτό το Παράδειγμα, τρεις περιπτώσεις δοκιμής θα εκτελούνται παράλληλα και θα συμπληρώνουν τα δεδομένα σύνδεσης http://demo.guru99.com/

Το ολοκληρωμένο έργο θα μοιάζει με αυτό:

Εκτελέστε Παράλληλες Δοκιμές με Selenium

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.
  • Μία περίοδος σύνδεσης θα συνδεθεί με ένα συγκεκριμένο πρόγραμμα περιήγησης.
  • Χρησιμοποιώντας το χαρακτηριστικό νήμα και το παράλληλο, εκτελείτε τα σενάρια σας παράλληλα.
  • Μπορείτε να χρησιμοποιήσετε την εξάρτηση χαρακτηριστικών για να ορίσετε τη σειρά δοκιμής εκτέλεσης