JavaScriptExecutor be Selenium példával

Mi a JavaScriptExecutor?

JavaA ScriptExecutor egy interfész, amely segít a végrehajtásban JavaScript végig Selenium Webdriver. JavaA ScriptExecutor két „executescript” és „executeAsyncScript” módszert biztosít a JavaScript futtatásához a kiválasztott ablakon vagy az aktuális oldalon.

JavaScriptExecutor

Miért van szükségünk JavaScriptExecutor?

In Selenium A webdriver, a lokátorok (például XPath, CSS stb.) a weboldalak azonosítására és műveletek végrehajtására szolgálnak.

Abban az esetben, ha ezek a lokátorok nem működnek, használhatja JavaScriptExecutor. Használhatod JavaScriptExecutor a kívánt művelet végrehajtásához egy webelemen.

Selenium támogatja a javaScriptExecutor programot. Nincs szükség további bővítményre vagy kiegészítőre. Csak importálnia kell (org.openqa.selenium.Javascriptvégrehajtó) a szkriptben, mint használni JavaScriptExecutor.

JavaScriptExecutor Methods in Selenium

executeScript

Ez a módszer végrehajtja JavaForgatókönyv az aktuálisan kiválasztott keret vagy ablak kontextusában Selenium. Az ebben a metódusban használt szkript egy névtelen függvény törzsében fut (név nélküli függvény). Bonyolult érveket is átadhatunk hozzá.

A szkript visszaadhat értékeket. A visszaküldött adattípusok:

  • logikai
  • Hosszú
  • Húr
  • Lista
  • WebElement.

JavascriptVégrehajtó szintaxis:

JavascriptExecutor js = (JavascriptExecutor) driver;  
js.executeScript(Script,Arguments);
  • Forgatókönyv - Ez a JavaSzkript, amelyet végre kell hajtani.
  • érvek – A forgatókönyv érvei. Ez nem kötelező.

futtassa az AsyncScriptet

Az aszinkron szkript segítségével az oldal gyorsabban jelenik meg. Ahelyett, hogy arra kényszerítené a felhasználókat, hogy várjanak egy szkript letöltésére, mielőtt az oldal megjelenik. Ez a függvény egy aszinkron darabot hajt végre JavaSzkript az aktuálisan kiválasztott keret vagy ablak kontextusában Selenium. Az így végrehajtott JS egyszálú, különböző visszahívási funkcióval, amely szinkronban fut.

Hogyan kell használni JavaScriptExecutor be Selenium

Itt van egy lépésről lépésre a használat menete JavaScriptExecutor be Selenium:

Step 1) Importálja a csomagot.

import org.openqa.selenium.JavascriptExecutor;

Step 2) Hozzon létre egy hivatkozást.

JavascriptExecutor js = (JavascriptExecutor) driver;

Step 3) Hívja a JavascriptVégrehajtó módszer.

js.executeScript(script, args);

Példa az elemre történő kattintásra JavaScripExecutor be Selenium

Az executeScript esetében három különböző példát fogunk látni egyenként.

1) Példa: Kattintson egy gombra a bejelentkezéshez és a riasztási ablak létrehozásához JavaScriptExecutor.

Ebben a forgatókönyvben a „Guru99” bemutató oldalt fogjuk használni a szemléltetéshez JavaScriptExecutor. Ebben a példában

Kattintson egy gombra a bejelentkezéshez és a figyelmeztető ablak létrehozásához JavaScriptExecutor

  • Sikeres bejelentkezés esetén figyelmeztető ablak megjelenítése.
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');");   
    		
    }		
}

output: Amikor a kód sikeresen lefutott. Meg fogja figyelni

  • Sikeres kattintás a bejelentkezés gombra és a
  • Megjelenik a figyelmeztető ablak (lásd az alábbi képet).

Kattintson egy gombra a bejelentkezéshez és a figyelmeztető ablak létrehozásához JavaScriptExecutor

2) Példa: Scrape adatok rögzítése, és a használatával navigáljon különböző oldalakra JavaScriptExecutor.

Hajtsa végre az alábbi szelén szkriptet. Ebben a példában

  • Indítsa el az oldalt
  • Töltse le a webhely részleteit, például a webhely URL-jét, a cím nevét és a webhely domain nevét.
  • Ezután lépjen egy másik oldalra.
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/'");			
    }		
}

output: Ha a fenti kód sikeresen lefut, lekéri a webhely részleteit, és egy másik oldalra navigál az alábbiak szerint.

Rögzítse az adatokat, és navigáljon különböző oldalakra JavaScriptExecutor

[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
===============================================

Rögzítse az adatokat, és navigáljon különböző oldalakra JavaScriptExecutor

3) Példa: Görgessen le a gombbal JavaScriptExecutor.

Hajtsa végre az alábbi szelén szkriptet. Ebben a példában

  • Indítsa el az oldalt
  • Görgessen le 600 képponttal
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)");			
    }		
}

teljesítmény: A fenti kód végrehajtásakor 600 képponttal lefelé gördül (lásd az alábbi képet).

Görgessen lefelé a használatával JavaScriptExecutor

Példa az executeAsyncScript-re Selenium

Az executeAsyncScript használata segít a teszt teljesítményének javításában. Lehetővé teszi az írási tesztet, mint egy normál kódolást.

A végrehajtóSync blokkolja a további műveleteket, amelyeket a Selenium böngésző, de az execAsync nem blokkolja a műveletet. Visszahívást küld a szerveroldalra Tesztelés csomagot, miután a forgatókönyv elkészült. Ez azt jelenti, hogy a szkripten belül mindent a böngésző hajt végre, nem a szerver.

1. példa: Elalvás végrehajtása a tesztelt böngészőben.

Ebben a forgatókönyvben a „Guru99” bemutató webhelyet fogjuk használni az executeAsyncScript illusztrálására. Ebben a példában meg fogja tenni

  • Indítsa el a böngészőt.
  • Nyitott webhely https://demo.guru99.com/V4/.
  • Az alkalmazás 5 másodpercet vár a további művelet végrehajtásához.

Step 1) Rögzítse a kezdési időpontot, mielőtt 5 másodpercet (5000 ezredmásodpercet) várna az executeAsyncScript() metódussal.

Step 2) Ezután az executeAsyncScript() segítségével várjon 5 másodpercet.

Step 3) Ezután kapja meg az aktuális időt.

Step 4) Kivonás (aktuális idő – kezdési idő) = eltelt idő.

Step 5) Ellenőrizze a kimenetet, hogy 5000 ezredmásodpercnél többet kell-e megjelenítenie

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));					
                    		
    }		
}			

output: Az eltelt idő több mint 5 másodperc (5000 ezredmásodperc) sikeresen megjelenítve az alábbiak szerint:

[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		
===============================================

Összegzésként

JavaA ScriptExecutor akkor használatos, amikor Selenium A Webdriver valamilyen probléma miatt nem kattint egyetlen elemre sem.

  • JavaA ScriptExecutor két „executescript” és „executeAsyncScript” módszert kínál a kezeléshez.
  • Végrehajtotta a JavaScript segítségével Selenium Webdriver.
  • Illusztrálja, hogyan kell átkattintani egy elemre JavaScriptExecutor, ha a szelén valamilyen probléma miatt nem kattint az elemre.
  • Létrehozta az „Alert” ablakot a segítségével JavaScriptExecutor.
  • A segítségével a másik oldalra navigált JavaScriptExecutor.
  • Lefelé görgette az ablakot a segítségével JavaScriptExecutor.
  • URL, cím és domain név lekérése a használatával JavaScriptExecutor.

Elolvasom Bővebben