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.
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ä
- Käynnistä verkkoselain
- avaa sivusto https://demo.guru99.com/V4/ ja
- kirjaudu sisään tunnuksilla
- 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).
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.
[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 ===============================================
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).
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
- Käynnistä selain.
- Avaa sivusto https://demo.guru99.com/V4/.
- Sovellus odottaa 5 sekuntia suorittaakseen lisätoiminnon.
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.