समानांतर निष्पादन Selenium

समानांतर में स्क्रिप्ट चलाने के तरीके को समझने के लिए, आइए पहले समझते हैं

हमें सत्र प्रबंधन की आवश्यकता क्यों है?

परीक्षण निष्पादन के दौरान, Selenium वेबड्राइवर को दिए गए आदेशों को निष्पादित करने के लिए हर समय ब्राउज़र के साथ बातचीत करनी होती है। निष्पादन के समय, यह भी संभव है कि वर्तमान निष्पादन पूरा होने से पहले, कोई और व्यक्ति उसी मशीन और उसी प्रकार के ब्राउज़र में किसी अन्य स्क्रिप्ट का निष्पादन शुरू कर दे।

सत्र प्रबंधन

ऐसी स्थिति में, हमें एक ऐसे तंत्र की आवश्यकता है जिसके द्वारा हमारे दो अलग-अलग निष्पादन एक दूसरे के साथ ओवरलैप न हों। इसे सत्र हैंडलिंग का उपयोग करके प्राप्त किया जा सकता है Selenium.

सत्र प्रबंधन कैसे प्राप्त करें? Selenium वेबड्राइवर?

यदि आप स्रोत कोड की जांच करें Selenium WebDriver में, आपको 'sessionId' नाम का एक वेरिएबल मिलेगा। जब भी हम WebDriver ऑब्जेक्ट का नया इंस्टेंस बनाते हैं, तो एक नया 'sessionId' जेनरेट होगा और उस विशेष ऑब्जेक्ट के साथ अटैच होगा। Firefox/क्रोम/IE ड्राइवर ().

सत्र प्रबंधन प्राप्त करें Selenium वेबड्राइवर

अतः इसके बाद हम जो कुछ भी करेंगे वह केवल उसी विशेष क्षेत्र में क्रियान्वित होगा। Firefox ब्राउज़र सत्र.

सत्र प्रबंधन प्राप्त करें Selenium वेबड्राइवर

चूंकि यह एक अंतर्निहित कार्यक्षमता है, इसलिए सत्र आईडी निर्दिष्ट करने की कोई स्पष्ट आवश्यकता नहीं है

Code उदाहरण: यहां दो अलग-अलग वेबड्राइवर के लिए दो अलग-अलग सत्र उत्पन्न किए जाएंगे।

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

ऐसी स्थितियाँ होती हैं जहाँ आप एक ही समय में कई परीक्षण चलाना चाहते हैं।

ऐसे मामलों में, कोई “समानांतर” विशेषता का उपयोग कर सकता है

समानांतर परीक्षण चलाएँ Selenium

सुइट टैग की समानांतर विशेषता चार मान स्वीकार कर सकती है:

परीक्षण अंदर सभी परीक्षण मामले टैग परीक्षण xml फ़ाइल समानांतर चलेगी.
कक्षाएं एक के अंदर सभी परीक्षण मामले Java कक्षा समानांतर चलेगी
तरीकों @Test एनोटेशन वाली सभी विधियाँ समानांतर रूप से निष्पादित होंगी।
उदाहरणों एक ही उदाहरण में परीक्षण मामले समानांतर रूप से निष्पादित होंगे, लेकिन दो अलग-अलग उदाहरणों की दो विधियां अलग-अलग थ्रेड में चलेंगी।

थ्रेड-काउंट विशेषता आपको यह निर्दिष्ट करने की अनुमति देती है कि इस निष्पादन के लिए कितने थ्रेड आवंटित किए जाने चाहिए।

पूर्ण उदाहरण: इस उदाहरण में, तीन परीक्षण मामले समानांतर चलेंगे और लॉगिन डेटा भरेंगे https://demo.guru99.com/

सम्पूर्ण परियोजना इस प्रकार दिखाई देगी:

समानांतर परीक्षण चलाएँ Selenium

टेस्ट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 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>

परीक्षण केस क्रम और निर्भरता

आप क्रम और निर्भरता निर्धारित कर सकते हैं परीक्षण का मामला निष्पादन।

मान लीजिए आपके पास दो टेस्ट केस हैं, 'टेस्टGuru99TC1' और 'परीक्षणGuru'99TC2' और आप टेस्ट केस 'test' को निष्पादित करना चाहते हैंGuru'टेस्ट' से पहले '99TC2'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 के नए इंस्टैंस के लिए एक नया sessionID बनाया जाता है।
  • एक सत्र एक विशेष ब्राउज़र से जुड़ेगा।
  • विशेषता थ्रेड और समानांतर का उपयोग करके, आप अपनी स्क्रिप्ट को समानांतर रूप से चलाते हैं।
  • आप निष्पादन का परीक्षण करने के लिए क्रम निर्धारित करने हेतु विशेषता निर्भरता का उपयोग कर सकते हैं

इस पोस्ट को संक्षेप में इस प्रकार लिखें: