JavaScriptExecutor sisse Selenium koos Näitega

Mis on JavaScriptExecutor?

JavaScriptExecutor on liides, mis aitab käivitada JavaSkript läbi Selenium Veebidraiver. JavaScriptExecutor pakub JavaScripti käivitamiseks valitud aknas või praegusel lehel kahte meetodit "executescript" ja "executeAsyncScript".

JavaScriptExecutor

Miks me vajame JavaScriptExecutor?

In Selenium Veebilehe tuvastamiseks ja toimingute tegemiseks kasutatakse veebidraiverit, lokaatoreid nagu XPath, CSS jne.

Kui need lokaatorid ei tööta, võite kasutada JavaScriptExecutor. Võite kasutada JavaScriptExecutor veebielemendiga soovitud toimingu tegemiseks.

Selenium toetab javaScriptExecutorit. Täiendavat pistikprogrammi või lisandmoodulit pole vaja. Peate lihtsalt importima (org.openqa.selenium.JavascriptTäitja) skriptis kasutamiseks JavaScriptExecutor.

JavaScriptExecutori meetodid sisse Selenium

executeScript

See meetod teostab JavaScript parajasti valitud raami või akna kontekstis Selenium. Selle meetodi puhul kasutatav skript töötab anonüümse funktsiooni (nimeta funktsioon) kehas. Võime sellele edastada ka keerulisi argumente.

Skript võib väärtusi tagastada. Tagastatud andmetüübid on

  • Boolean
  • Pikk
  • nöör
  • nimekiri
  • WebElement.

JavascriptTäitja süntaks:

JavascriptExecutor js = (JavascriptExecutor) driver;  
js.executeScript(Script,Arguments);
  • Script - See on JavaSkript, mis tuleb käivitada.
  • Argumendid – Need on stsenaariumi argumendid. See on valikuline.

käivitage AsyncScript

Asünkroonse skriptiga renderdatakse teie leht kiiremini. Selle asemel, et sundida kasutajaid ootama skripti allalaadimist enne lehe renderdamist. See funktsioon käivitab asünkroonse osa JavaSkript praegu valitud raami või akna kontekstis Selenium. Nii käivitatud JS on ühe lõimega mitmesuguse tagasihelistamise funktsiooniga, mis töötab sünkroonselt.

Kuidas kasutada JavaScriptExecutor sisse Selenium

Siin on samm-sammult kasutamise protsess JavaScriptExecutor sisse Selenium:

Step 1) Importige pakend.

import org.openqa.selenium.JavascriptExecutor;

Step 2) Looge viide.

JavascriptExecutor js = (JavascriptExecutor) driver;

Step 3) Helistage JavascriptTäitja meetod.

js.executeScript(script, args);

Näide elemendi klõpsamisest JavaScripExecutor sisse Selenium

executeScripti puhul näeme ükshaaval kolme erinevat näidet.

1) Näide: sisselogimiseks ja hoiatusakna genereerimiseks klõpsake nuppu JavaScriptExecutor.

Selle stsenaariumi puhul kasutame illustreerimiseks “Guru99” demosaiti JavaScriptExecutor. Selles näites

Klõpsake nuppu sisselogimiseks ja hoiatusakna loomiseks JavaScriptExecutor

  • Eduka sisselogimise korral kuvage hoiatusaken.
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');");   
    		
    }		
}

Väljund: Kui kood on edukalt käivitatud. Sa jälgid

  • Edukalt klõpsake sisselogimisnupul ja
  • Kuvatakse hoiatusaken (vt pilti allpool).

Klõpsake nuppu sisselogimiseks ja hoiatusakna loomiseks JavaScriptExecutor

2) Näide: jäädvustage kraapimisandmed ja navigeerige selle abil erinevatele lehtedele JavaScriptExecutor.

Käivitage allolev seleeni skript. Selles näites

  • Käivitage sait
  • Hankige saidi üksikasjad, nagu saidi URL, pealkirja nimi ja saidi domeeninimi.
  • Seejärel liikuge teisele lehele.
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/'");			
    }		
}

Väljund: Kui ülaltoodud kood on edukalt käivitatud, hangib see saidi üksikasjad ja navigeerib teisele lehele, nagu allpool näidatud.

Jäädvustage andmeid ja navigeerige selle abil erinevatele lehtedele 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
===============================================

Jäädvustage andmeid ja navigeerige selle abil erinevatele lehtedele JavaScriptExecutor

3) Näide: kerige alla kasutades JavaScriptExecutor.

Käivitage allolev seleeni skript. Selles näites

  • Käivitage sait
  • Kerige alla 600 piksli võrra
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)");			
    }		
}

Väljund: Kui ülaltoodud kood käivitatakse, keritakse see 600 piksli võrra allapoole (vt allolevat pilti).

Kerige alla Kasutades JavaScriptExecutor

executeAsyncScripti näide Selenium

executeAsyncScripti kasutamine aitab teie testi jõudlust parandada. See võimaldab kirjutada testi rohkem nagu tavaline kodeerimine.

TegevjuhtSync blokeerib edasised toimingud, mida teostab Selenium brauser, kuid execAsync ei blokeeri tegevust. See saadab tagasihelistamise serveri poolele Testimine komplekti, kui skript on valmis. See tähendab, et kõike skripti sees käivitab brauser, mitte server.

Näide 1: testitavas brauseris unerežiim.

Selle stsenaariumi korral kasutame executeAsyncScripti illustreerimiseks "Guru99" demosaiti. Selles näites saate seda teha

Step 1) Jäädvustage algusaeg, enne kui ootate 5 sekundit (5000 millisekundit), kasutades meetodit executeAsyncScript().

Step 2) Seejärel kasutage 5 sekundi ootamiseks käsku executeAsyncScript().

Step 3) Seejärel hankige praegune kellaaeg.

Step 4) Lahuta (praegune aeg – algusaeg) = möödunud aeg.

Step 5) Kontrollige, kas väljund peaks kuvama rohkem kui 5000 millisekundit

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

Väljund: Möödunud aeg kuvati edukalt rohkem kui 5 sekundit (5000 millisekundit), nagu allpool näidatud:

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

kokkuvõte

JavaScriptExecutorit kasutatakse siis, kui Selenium Veebidraiver ei suuda mõne probleemi tõttu ühelgi elemendil klõpsata.

  • JavaScriptExecutor pakub käsitlemiseks kahte meetodit "executescript" ja "executeAsyncScript".
  • Täiustatud JavaSkripti kasutamine Selenium Veebidraiver.
  • Illustreeritud, kuidas elemendil läbi klõpsata JavaScriptExecutor, kui seleenil ei õnnestu mõne probleemi tõttu elemendil klõpsata.
  • Loodud 'Hoiatuse' aken kasutades JavaScriptExecutor.
  • Navigeeriti teisele lehele kasutades JavaScriptExecutor.
  • Keris akna alla, kasutades JavaScriptExecutor.
  • Toodi URL, pealkiri ja domeeninimi kasutades JavaScriptExecutor.