JavaScriptExecutor sisään Selenium esimerkin kanssa

Mikä on JavaScriptExecutor?

JavaScriptExecutor on käyttöliittymä, joka auttaa suorittamaan JavaKäsikirjoitus läpi Selenium Web-ajuri. JavaScriptExecutor tarjoaa kaksi tapaa "executescript" ja "executeAsyncScript" suorittaakseen javascriptin valitussa ikkunassa tai nykyisellä sivulla.

JavaScriptExecutor

Miksi tarvitsemme JavaScriptExecutor?

In Selenium Webdriveriä, paikantimia, kuten XPath, CSS jne., käytetään tunnistamaan ja suorittamaan toimintoja verkkosivulla.

Jos nämä paikantimet eivät toimi, voit käyttää niitä JavaScriptExecutor. Voit käyttää JavaScriptExecutor suorittaa halutun toiminnon verkkoelementille.

Selenium tukee javaScriptExecutoria. Ylimääräistä laajennusta tai lisäosaa ei tarvita. Sinun tarvitsee vain tuoda (org.openqa.selenium.Javascripttäytäntöönpanija) skriptissä käytettäväksi JavaScriptExecutor.

JavaScriptExecutor Methods in Selenium

executeScript

Tämä menetelmä suorittaa JavaKäsikirjoitus valitun kehyksen tai ikkunan yhteydessä Selenium. Tässä menetelmässä käytetty komentosarja toimii anonyymin funktion rungossa (funktio ilman nimeä). Voimme esittää sille myös monimutkaisia ​​argumentteja.

Skripti voi palauttaa arvoja. Palautetut tietotyypit ovat

  • boolean
  • Pitkät
  • jono
  • Lista
  • WebElement.

JavascriptSuorittajan syntaksi:

JavascriptExecutor js = (JavascriptExecutor) driver;  
js.executeScript(Script,Arguments);
  • Käsikirjoitus - Tämä on JavaSuoritettava komentosarja.
  • argumentit – Se on käsikirjoituksen argumentit. Se on valinnainen.

suorita AsyncScript

Asynkronisen skriptin avulla sivusi renderöidään nopeammin. Sen sijaan, että käyttäjät pakotettaisiin odottamaan skriptin latautumista, ennen kuin sivu hahmonnetaan. Tämä toiminto suorittaa asynkronisen osan JavaKomentosarja valitun kehyksen tai ikkunan kontekstissa Selenium. Näin suoritettu JS on yksisäikeinen, jossa on erilainen takaisinsoittotoiminto, joka toimii synkronisesti.

Kuinka käyttää JavaScriptExecutor sisään Selenium

Tässä on vaiheittainen käyttöprosessi JavaScriptExecutor sisään Selenium:

Vaihe 1) Tuo paketti.

import org.openqa.selenium.JavascriptExecutor;

Vaihe 2) Luo viite.

JavascriptExecutor js = (JavascriptExecutor) driver;

Vaihe 3) Soita JavascriptToteuttaja menetelmä.

js.executeScript(script, args);

Esimerkki elementin napsauttamisesta JavaScripExecutor sisään Selenium

executeScriptille näemme kolme eri esimerkkiä yksitellen.

1) Esimerkki: Napsauta painiketta kirjautuaksesi sisään ja luodaksesi hälytysikkunan käyttämällä JavaScriptExecutor.

Tässä skenaariossa käytämme "Guru99" -demosivustoa havainnollistamiseen JavaScriptExecutor. Tässä esimerkissä

Napsauta painiketta kirjautuaksesi ja luodaksesi hälytysikkunan JavaScriptExecutor

  • Näytä varoitusikkuna onnistuneesta kirjautumisesta.
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');");   
    		
    }		
}

lähtö: Kun koodi on suoritettu onnistuneesti. Tulet tarkkailemaan

  • Onnistunut napsautus kirjautumispainiketta ja
  • Varoitusikkuna tulee näkyviin (katso kuva alla).

Napsauta painiketta kirjautuaksesi ja luodaksesi hälytysikkunan JavaScriptExecutor

2) Esimerkki: Kaappaa Scrape Data ja siirry eri sivuille käyttämällä JavaScriptExecutor.

Suorita alla oleva seleenikomentosarja. Tässä esimerkissä

  • Käynnistä sivusto
  • Hae sivuston tiedot, kuten sivuston URL-osoite, otsikon nimi ja sivuston verkkotunnus.
  • Siirry sitten toiselle sivulle.
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/'");			
    }		
}

lähtö: Kun yllä oleva koodi on suoritettu onnistuneesti, se hakee sivuston tiedot ja siirtyy toiselle sivulle alla olevan kuvan mukaisesti.

Kaappaa Scrape Data ja navigoi eri sivuille käyttämällä 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
===============================================

Kaappaa Scrape Data ja navigoi eri sivuille käyttämällä JavaScriptExecutor

3) Esimerkki: Vieritä alas -painikkeilla JavaScriptExecutor.

Suorita alla oleva seleenikomentosarja. Tässä esimerkissä

  • Käynnistä sivusto
  • Vieritä alas 600 pikseliä
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)");			
    }		
}

ulostulo: Kun yllä oleva koodi suoritetaan, se rullaa alaspäin 600 pikseliä (katso kuva alla).

Vieritä alas käyttämällä JavaScriptExecutor

Esimerkki executeAsyncScriptistä Selenium

executeAsyncScriptin käyttäminen auttaa parantamaan testin suorituskykyä. Se mahdollistaa kokeen kirjoittamisen enemmän kuin normaalin koodauksen.

ToimitusjohtajaSync estää sovelluksen suorittamat muut toiminnot Selenium selain, mutta execAsync ei estä toimintaa. Se lähettää takaisinsoittopyynnön palvelinpuolelle Testaus sarja, kun käsikirjoitus on valmis. Se tarkoittaa, että selain suorittaa kaiken komentosarjan sisällä, ei palvelin.

Esimerkki 1: Nukkuminen testattavassa selaimessa.

Tässä skenaariossa käytämme "Guru99"-demosivustoa havainnollistamaan executeAsyncScriptiä. Tässä esimerkissä teet

Vaihe 1) Tallenna aloitusaika ennen kuin odotat 5 sekuntia (5000 millisekuntia) käyttämällä executeAsyncScript()-menetelmää.

Vaihe 2) Odota sitten 5 sekuntia käyttämällä executeAsyncScript()-komentoa.

Vaihe 3) Hae sitten nykyinen aika.

Vaihe 4) Vähennä (nykyinen aika – alkamisaika) = kulunut aika.

Vaihe 5) Tarkista, että lähdön pitäisi näyttää yli 5000 millisekuntia

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

lähtö: Yli 5 sekuntia (5000 millisekuntia) kulunut aika näytettiin onnistuneesti alla olevan kuvan mukaisesti:

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

Yhteenveto

JavaScriptExecutoria käytetään, kun Selenium Webdriver ei napsauta mitään elementtiä jonkin ongelman vuoksi.

  • JavaScriptExecutor tarjoaa kaksi tapaa "executescript" ja "executeAsyncScript" käsitellä.
  • Suoritettu JavaSkripti käyttää Selenium Web-ajuri.
  • Kuvitettu, kuinka elementtiä napsautetaan läpi JavaScriptExecutor, jos seleeni ei napsauta elementtiä jonkin ongelman vuoksi.
  • Luotiin "Hälytys"-ikkuna käyttämällä JavaScriptExecutor.
  • Siirtyi eri sivulle käyttämällä JavaScriptExecutor.
  • Vieritä ikkunaa alas käyttämällä JavaScriptExecutor.
  • Haettu URL-osoite, otsikko ja verkkotunnus käyttämällä JavaScriptExecutor.

Lue lisää Readmore