Javaस्क्रिप्टएक्सीक्यूटर Selenium उदाहरण के साथ

एचएमबी क्या है? Javaस्क्रिप्ट निष्पादक?

Javaस्क्रिप्ट एक्जीक्यूटर एक इंटरफ़ेस है जो निष्पादित करने में मदद करता है Javaस्क्रिप्ट के माध्यम से Selenium वेबड्राइवर. Javaस्क्रिप्टएक्सीक्यूटर चयनित विंडो या वर्तमान पृष्ठ पर जावास्क्रिप्ट चलाने के लिए दो विधियाँ “executescript” और “executeAsyncScript” प्रदान करता है।

Javaस्क्रिप्ट निष्पादक

हमें क्यों चाहिए? Javaस्क्रिप्ट निष्पादक?

In Selenium वेबड्राइवर, XPath, CSS आदि जैसे लोकेटर का उपयोग वेब पेज पर पहचान करने और संचालन करने के लिए किया जाता है।

यदि ये लोकेटर काम नहीं करते हैं तो आप इनका उपयोग कर सकते हैं Javaस्क्रिप्टएक्सीक्यूटर. आप उपयोग कर सकते हैं Javaकिसी वेब तत्व पर वांछित ऑपरेशन निष्पादित करने के लिए स्क्रिप्ट एक्जीक्यूटर.

Selenium javaScriptExecutor का समर्थन करता है। किसी अतिरिक्त प्लगइन या ऐड-ऑन की आवश्यकता नहीं है। आपको बस आयात करने की आवश्यकता है (org.openqa.सेलेनियम.Javascriptनिर्वाहक) स्क्रिप्ट में उपयोग करने के लिए Javaस्क्रिप्ट निष्पादक.

Javaस्क्रिप्टएक्सीक्यूटर विधियाँ Selenium

निष्पादितस्क्रिप्ट

यह विधि निष्पादित होती है Javaलिपि वर्तमान में चयनित फ़्रेम या विंडो के संदर्भ में Seleniumइस विधि में उपयोग की जाने वाली स्क्रिप्ट एक अनाम फ़ंक्शन (बिना नाम वाला फ़ंक्शन) के मुख्य भाग में चलती है। हम इसमें जटिल तर्क भी पास कर सकते हैं।

स्क्रिप्ट मान लौटा सकती है। लौटाए गए डेटा प्रकार हैं

  • बूलियन
  • लंबा
  • तार
  • सूची
  • वेबएलिमेंट.

Javascriptनिष्पादक सिंटैक्स:

JavascriptExecutor js = (JavascriptExecutor) driver;  
js.executeScript(Script,Arguments);
  • लिपि - यह है Javaस्क्रिप्ट जिसे निष्पादित करने की आवश्यकता है.
  • तर्क - यह स्क्रिप्ट के लिए तर्क है। यह वैकल्पिक है।

निष्पादित करें

एसिंक्रोनस स्क्रिप्ट के साथ, आपका पेज ज़्यादा तेज़ी से रेंडर होता है। पेज रेंडर होने से पहले उपयोगकर्ताओं को स्क्रिप्ट डाउनलोड होने का इंतज़ार करने के लिए मजबूर करने के बजाय। यह फ़ंक्शन एसिंक्रोनस भाग को निष्पादित करेगा Javaवर्तमान में चयनित फ्रेम या विंडो के संदर्भ में स्क्रिप्ट Seleniumइस प्रकार निष्पादित JS विभिन्न कॉलबैक फ़ंक्शन के साथ एकल-थ्रेडेड है जो सिंक्रोनस रूप से चलता है।

इसका उपयोग कैसे करें: Javaस्क्रिप्टएक्सीक्यूटर Selenium

यहां इसका उपयोग करने की चरण-दर-चरण प्रक्रिया दी गई है Javaस्क्रिप्टएक्सीक्यूटर Selenium:

चरण 1) पैकेज आयात करें.

import org.openqa.selenium.JavascriptExecutor;

चरण 2) एक संदर्भ बनाएं.

JavascriptExecutor js = (JavascriptExecutor) driver;

चरण 3) बुलाएं Javascriptनिष्पादक विधि.

js.executeScript(script, args);

किसी तत्व पर क्लिक करने का उदाहरण Javaस्क्रिपएक्सीक्यूटर Selenium

ExecuteScript के लिए, हम एक-एक करके तीन अलग-अलग उदाहरण देखेंगे।

1) उदाहरण: लॉगिन करने के लिए एक बटन पर क्लिक करें और अलर्ट विंडो उत्पन्न करें Javaस्क्रिप्ट निष्पादक.

इस परिदृश्य में, हम वर्णन करने के लिए “Guru99” डेमो साइट का उपयोग करेंगे Javaस्क्रिप्टएक्सीक्यूटर. इस उदाहरण में,

  • वेब ब्राउज़र लॉन्च करें
  • साइट खोलें https://demo.guru99.com/V4/ और
  • क्रेडेंशियल के साथ लॉगिन करें

लॉगिन करने के लिए एक बटन पर क्लिक करें और अलर्ट विंडो उत्पन्न करें Javaस्क्रिप्ट निष्पादक

  • सफल लॉगिन पर अलर्ट विंडो प्रदर्शित करें।
import org.openqa.selenium.By;		
import org.openqa.selenium.JavascriptExecutor;		
import org.openqa.selenium.WebDriver;		
import org.openqa.selenium.WebElement;		
import org.openqa.selenium.firefox.FirefoxDriver;		
import org.testng.annotations.Test;		
    		
public class JavaSE_Test {				


    @Test		
    public void Login() 					
    {		
        WebDriver driver= new FirefoxDriver();			
        		
        //Creating the JavascriptExecutor interface object by Type casting		
        JavascriptExecutor js = (JavascriptExecutor)driver;		
        		
        //Launching the Site.		
        driver.get("https://demo.guru99.com/V4/");			
        		
        WebElement button =driver.findElement(By.name("btnLogin"));			
        		
        //Login to Guru99 		
        driver.findElement(By.name("uid")).sendKeys("mngr34926");					
        driver.findElement(By.name("password")).sendKeys("amUpenu");					
        		
        //Perform Click on LOGIN button using JavascriptExecutor		
        js.executeScript("arguments[0].click();", button);
                                
        //To generate Alert window using JavascriptExecutor. Display the alert message 			
        js.executeScript("alert('Welcome to Guru99');");   
    		
    }		
}

आउटपुट: जब कोड सफलतापूर्वक निष्पादित हो जाता है, तो आप देखेंगे

  • लॉगिन बटन पर सफलतापूर्वक क्लिक करें और
  • अलर्ट विंडो प्रदर्शित होगी (नीचे चित्र देखें)।

लॉगिन करने के लिए एक बटन पर क्लिक करें और अलर्ट विंडो उत्पन्न करें Javaस्क्रिप्ट निष्पादक

2) उदाहरण: स्क्रैप डेटा कैप्चर करें और विभिन्न पृष्ठों पर नेविगेट करें Javaस्क्रिप्ट निष्पादक.

नीचे दी गई सेलेनियम स्क्रिप्ट निष्पादित करें। इस उदाहरण में,

  • साइट लॉन्च करें
  • साइट का विवरण प्राप्त करें जैसे साइट का यूआरएल, शीर्षक नाम और डोमेन नाम।
  • फिर किसी दूसरे पेज पर जाएँ।
import org.openqa.selenium.JavascriptExecutor;		
import org.openqa.selenium.WebDriver;		
import org.openqa.selenium.firefox.FirefoxDriver;		
import org.testng.annotations.Test;		
    		
public class JavaSE_Test {				

    @Test		
    public void Login() 					
    {		
        WebDriver driver= new FirefoxDriver();			
        		
        //Creating the JavascriptExecutor interface object by Type casting		
        JavascriptExecutor js = (JavascriptExecutor)driver;		
        		
        //Launching the Site.		
        driver.get("https://demo.guru99.com/V4/");
			
        //Fetching the Domain Name of the site. Tostring() change object to name.		
        String DomainName = js.executeScript("return document.domain;").toString();			
        System.out.println("Domain name of the site = "+DomainName);					
          		
        //Fetching the URL of the site. Tostring() change object to name		
        String url = js.executeScript("return document.URL;").toString();			
        System.out.println("URL of the site = "+url);					
          		
       //Method document.title fetch the Title name of the site. Tostring() change object to name		
       String TitleName = js.executeScript("return document.title;").toString();			
       System.out.println("Title of the page = "+TitleName);					

        		
      //Navigate to new Page i.e to generate access page. (launch new url)		
      js.executeScript("window.location = 'https://demo.guru99.com/'");			
    }		
}

आउटपुट: जब उपरोक्त कोड सफलतापूर्वक निष्पादित हो जाएगा, तो यह साइट का विवरण प्राप्त करेगा और नीचे दिखाए अनुसार अलग पृष्ठ पर ले जाएगा।

स्क्रैप डेटा कैप्चर करें और विभिन्न पृष्ठों पर नेविगेट करें Javaस्क्रिप्ट निष्पादक

[TestNG] Running:		
  C:\Users\gauravn\AppData\Local\Temp\testng-eclipse-467151014\testng-customsuite.xml		

log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies).		
log4j:WARN Please initialize the log4j system properly.		
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.		
Domain name of the site = demo.guru99.com		
URL of the site = https://demo.guru99.com/V4/		
Title of the page = Guru99 Bank Home Page		
PASSED: Login		

===============================================		
    Default test		
    Tests run: 1, Failures: 0, Skips: 0
===============================================

स्क्रैप डेटा कैप्चर करें और विभिन्न पृष्ठों पर नेविगेट करें Javaस्क्रिप्ट निष्पादक

3) उदाहरण: नीचे स्क्रॉल करें Javaस्क्रिप्ट निष्पादक.

नीचे दी गई सेलेनियम स्क्रिप्ट निष्पादित करें। इस उदाहरण में,

  • साइट लॉन्च करें
  • 600 पिक्सेल तक नीचे स्क्रॉल करें
import org.openqa.selenium.JavascriptExecutor;		
import org.openqa.selenium.WebDriver;		
import org.openqa.selenium.firefox.FirefoxDriver;		
import org.testng.annotations.Test;		
    		
public class JavaSE_Test {				

    @Test		
    public void Login() 					
    {		
        WebDriver driver= new FirefoxDriver();			
        		
        //Creating the JavascriptExecutor interface object by Type casting		
        JavascriptExecutor js = (JavascriptExecutor)driver;		
        		
        //Launching the Site.		
        driver.get("http://moneyboats.com/");			
     
        //Maximize window		
        driver.manage().window().maximize();		
        		
        //Vertical scroll down by 600  pixels		
        js.executeScript("window.scrollBy(0,600)");			
    }		
}

उत्पादनजब उपरोक्त कोड निष्पादित किया जाएगा, तो यह 600 पिक्सेल तक नीचे स्क्रॉल करेगा (नीचे चित्र देखें)।

नीचे स्क्रॉल करें Javaस्क्रिप्ट निष्पादक

में executeAsyncScript का उदाहरण Selenium

executeAsyncScript का उपयोग करने से आपके परीक्षण के प्रदर्शन को बेहतर बनाने में मदद मिलती है। यह परीक्षण को सामान्य कोडिंग की तरह लिखने की अनुमति देता है।

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

उदाहरण 1: परीक्षण के अंतर्गत ब्राउज़र में स्लीप क्रियान्वित करना।

इस परिदृश्य में, हम executeAsyncScript को दर्शाने के लिए “Guru99” डेमो साइट का उपयोग करेंगे। इस उदाहरण में, आप

  • ब्राउज़र लॉन्च करें।
  • साइट खोलें https://demo.guru99.com/V4/.
  • एप्लिकेशन आगे की कार्रवाई करने के लिए 5 सेकंड तक प्रतीक्षा करता है।

चरण 1) executeAsyncScript() विधि का उपयोग करके 5 सेकंड (5000 मिलीसेकंड) तक प्रतीक्षा करने से पहले प्रारंभ समय कैप्चर करें।

चरण 2) फिर, 5 सेकंड प्रतीक्षा करने के लिए executeAsyncScript() का उपयोग करें।

चरण 3) फिर, वर्तमान समय प्राप्त करें.

चरण 4) घटाएँ (वर्तमान समय - प्रारंभ समय) = बीता हुआ समय।

चरण 5) आउटपुट को सत्यापित करें, यह 5000 मिलीसेकंड से अधिक प्रदर्शित होना चाहिए

import java.util.concurrent.TimeUnit;		

import org.openqa.selenium.JavascriptExecutor;		
import org.openqa.selenium.WebDriver;		
import org.openqa.selenium.firefox.FirefoxDriver;		
import org.testng.annotations.Test;		
    		
public class JavaSE_Test {				

    @Test		
    public void Login() 					
    {		
        		
        WebDriver driver= new FirefoxDriver();			

        //Creating the JavascriptExecutor interface object by Type casting		
        JavascriptExecutor js = (JavascriptExecutor)driver;		
        		
        //Launching the Site.		
        driver.get("https://demo.guru99.com/V4/");			
     
          //Maximize window		
          driver.manage().window().maximize();		
        		
          //Set the Script Timeout to 20 seconds		
          driver.manage().timeouts().setScriptTimeout(20, TimeUnit.SECONDS);			
             
          //Declare and set the start time		
          long start_time = System.currentTimeMillis();			
                   
          //Call executeAsyncScript() method to wait for 5 seconds		
          js.executeAsyncScript("window.setTimeout(arguments[arguments.length - 1], 5000);");			
          		
         //Get the difference (currentTime - startTime)  of times.		
         System.out.println("Passed time: " + (System.currentTimeMillis() - start_time));					
                    		
    }		
}			

आउटपुट: नीचे दिखाए अनुसार 5 सेकंड (5000 मिलीसेकंड) से अधिक समय सफलतापूर्वक प्रदर्शित किया गया:

[TestNG] Running:		
C:\Users\gauravn\AppData\Local\Temp\testng-eclipse-387352559\testng-customsuite.xml		
log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies).		
log4j:WARN Please initialize the log4j system properly.		
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.		
Passed time: 5022		
PASSED: Login		

===============================================		
    Default test		
    Tests run: 1, Failures: 0, Skips: 0		
===============================================

सारांश

Javaस्क्रिप्टएक्सीक्यूटर का उपयोग तब किया जाता है जब Selenium किसी समस्या के कारण वेबड्राइवर किसी भी तत्व पर क्लिक करने में विफल रहता है।

  • Javaस्क्रिप्टएक्सीक्यूटर दो विधियाँ “executescript” और “executeAsyncScript” प्रदान करता है।
  • निष्पादित किया गया Javaस्क्रिप्ट का उपयोग Selenium वेबड्राइवर.
  • किसी तत्व पर क्लिक करने का तरीका दर्शाया गया है Javaस्क्रिप्टएक्सीक्यूटर, यदि सेलेनियम किसी समस्या के कारण तत्व पर क्लिक करने में विफल रहता है।
  • का उपयोग करके 'अलर्ट' विंडो तैयार की गई Javaस्क्रिप्ट निष्पादक.
  • का उपयोग करके अलग पृष्ठ पर नेविगेट किया गया Javaस्क्रिप्ट निष्पादक.
  • विंडो को नीचे स्क्रॉल किया गया Javaस्क्रिप्ट निष्पादक.
  • URL, शीर्षक और डोमेन नाम का उपयोग करके प्राप्त किया गया Javaस्क्रिप्ट निष्पादक.