JavaScriptExecutor Selenium WebDriver -ohjelmassa esimerkin avulla

Sisällysluettelo:

Anonim

Mikä on JavaScriptExecutor?

JavaScriptExecutor on käyttöliittymä, joka auttaa suorittamaan JavaScriptin Selenium Webdriverin kautta. JavaScriptExecutor tarjoaa kaksi tapaa "executescript" ja "executeAsyncScript" suorittaakseen javascriptin valitussa ikkunassa tai nykyisellä sivulla.

Tässä opetusohjelmassa opit -

  • Mikä on JavaScriptExecutor?
  • Miksi tarvitsemme JavaScriptExecutorin?
  • JavaScriptExecutor-menetelmät
  • Esimerkki executeAsyncScriptistä
    • Esimerkki 1: Lepotilan suorittaminen testattavassa selaimessa.
  • Esimerkki executeScriptistä
    • 1) Esimerkki: Napsauta painiketta kirjautua sisään ja luoda hälytysikkuna
    • 2) Esimerkki: Sieppaa kaapitiedot ja siirry eri sivuille
    • 3) Esimerkki: Vieritä alaspäin

Miksi tarvitsemme JavaScriptExecutorin?

Selenium Webdriverissa lokaattoreita, kuten XPath, CSS jne., Käytetään tunnistamaan ja suorittamaan toimintoja verkkosivulla.

Jos nämä paikannuslaitteet eivät toimi, voit käyttää JavaScriptExecutoria. Voit suorittaa halutun toiminnon web-elementille JavaScriptExecutorin avulla.

Seleeni tukee javaScriptExecutoria. Lisälaajennusta tai lisäosaa ei tarvita. Sinun tarvitsee vain tuoda ( org.openqa.selenium.JavascriptExecutor ) komentosarjaan, jotta voit käyttää JavaScriptExecutoria.

JavaScriptExecutor-menetelmät

  1. executeAsyncScript

Asynkronisen komentosarjan avulla sivusi hahmontuu nopeammin. Sen sijaan, että pakotettaisiin käyttäjiä odottamaan komentosarjan lataamista ennen sivun renderointia. Tämä toiminto suorittaa asynkronisen JavaScript-osan Seleniumissa valitun kehyksen tai ikkunan yhteydessä. Näin suoritettu JS on yksisäikeinen, ja siinä on erilainen soittopyyntö, joka toimii synkronisesti.

  1. executeScript

Tämä menetelmä suorittaa JavaScriptiä tällä hetkellä valitun kehyksen tai ikkunan yhteydessä Seleniumissa. Tässä menetelmässä käytetty komentosarja toimii nimettömän funktion rungossa (funktio ilman nimeä). Voimme myös välittää sille monimutkaisia ​​argumentteja.

Skripti voi palauttaa arvoja. Palautetut tietotyypit ovat

  • Boolen
  • Pitkä
  • Merkkijono
  • Lista
  • WebElement.

JavascriptExecutorin perussyntaksi on annettu alla:

Syntaksi:

JavascriptExecutor js = (JavascriptExecutor) -ohjain;js.executeScript (komentosarja, argumentit);
  • Skripti - Tämä on suoritettava JavaScript.
  • Argumentit - Ne ovat komentosarjan argumentit. Se on valinnainen.

Esimerkki executeAsyncScriptistä

ExecuteAsyncScriptin käyttö parantaa testisi suorituskykyä. Sen avulla kirjoitustesti muistuttaa enemmän kuin normaali koodaus.

ExecSync estää Selenium-selaimen suorittamat muut toiminnot, mutta execAsync ei estä toimintaa. Kun komentosarja on valmis, se lähettää soittopyynnön palvelinpuolen testaussarjaan. Se tarkoittaa, että kaikki komentosarjan sisällä olevat toiminnot suorittaa selain eikä palvelin.

Esimerkki 1: Lepotilan suorittaminen testattavassa selaimessa.

Tässä skenaariossa käytämme "Guru99" -demosivustoa esimerkkinä executeAsyncScript. Tässä esimerkissä teet

  • Käynnistä selain.
  • Avaa sivusto "http://demo.guru99.com/V4/".
  • Sovellus odottaa 5 sekuntia suorittaakseen uuden toimenpiteen.

Vaihe 1) Ota aloitusaika ennen 5 sekunnin odottamista (5000 millisekuntia) käyttämällä executeAsyncScript () -menetelmää.

Vaihe 2) Odota sitten 5 sekuntia executeAsyncScript () -toiminnon avulla.

Vaihe 3) Hanki sitten nykyinen aika.

Vaihe 4) Vähennä (nykyinen aika - aloitusaika) = kulunut aika.

Vaihe 5) Tarkista, että sen pitäisi näyttää yli 5000 millisekuntia

tuo java.util.concurrent.TimeUnit;tuo org.openqa.selenium.JavascriptExecutor;tuo org.openqa.selenium.WebDriver;tuo org.openqa.selenium.firefox.FirefoxDriver;tuo org.testng.annotations.Test;julkisen luokan JavaSE_Test {@Testatapublic void Kirjaudu (){WebDriver-ohjain = uusi FirefoxDriver ();// JavascriptExecutor-käyttöliittymäobjektin luominen tyypin valinnan avullaJavascriptExecutor js = (JavascriptExecutor) -ohjain;// Sivuston käynnistäminen.driver.get ("http://demo.guru99.com/V4/");// Suurenna ikkunaohjain.hallinta (). ikkuna (). maksimoi ();// Aseta komentosarjan aikakatkaisuksi 20 sekuntiadriver.manage (). timeout (). setScriptTimeout (20, TimeUnit.SECONDS);// Ilmoita ja aseta aloitusaikapitkä alkamisaika = System.currentTimeMillis ();// Kutsu executeAsyncScript () -menetelmää odottamaan 5 sekuntiajs.executeAsyncScript ("window.setTimeout (argumentit [argumentit.pituus - 1], 5000);");// Hanki aikojen ero (currentTime - startTime).System.out.println ("Kulunut aika: + (System.currentTimeMillis () - aloitusaika));}}

Lähtö: Kulunut aika näytettiin onnistuneesti yli 5 sekunnissa (5000 milisekuntia) alla olevan kuvan mukaisesti:

[TestNG] Juoksu:C: \ Users \ gauravn \ AppData \ Local \ Temp \ testng-eclipse-387352559 \ testng-Customsuite.xmllog4j: VAROITUS Hakijalle ei löytynyt liitteitä (org.apache.http.client.protocol.RequestAddCookies).log4j: WARN Alusta log4j-järjestelmä oikein.log4j: VAROITUS Katso lisätietoja osoitteesta http://logging.apache.org/log4j/1.2/faq.html#noconfig.Kulunut aika: 5022YLITETTY: Kirjaudu=================================================OletustestiTestit suoritetaan: 1, epäonnistumiset: 0, ohitukset: 0=================================================

Esimerkki executeScriptistä

ExecuteScriptille näemme kolme erilaista esimerkkiä yksi kerrallaan.

1) Esimerkki: Napsauta painiketta kirjautua sisään ja luoda hälytysikkuna JavaScriptExecutorilla.

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

  • Käynnistä verkkoselain
  • avaa sivusto "http://demo.guru99.com/V4/" ja
  • kirjaudu sisään kirjautumistiedoilla
  • Näytä hälytysikkuna onnistuneesta kirjautumisesta.
tuo org.openqa.selenium.By;tuo org.openqa.selenium.JavascriptExecutor;tuo org.openqa.selenium.WebDriver;tuonti org.openqa.selenium.WebElement;tuo org.openqa.selenium.firefox.FirefoxDriver;tuo org.testng.annotations.Test;julkisen luokan JavaSE_Test {@Testatapublic void Kirjaudu (){WebDriver-ohjain = uusi FirefoxDriver ();// JavascriptExecutor-käyttöliittymäobjektin luominen tyypin valinnan avullaJavascriptExecutor js = (JavascriptExecutor) -ohjain;// Sivuston käynnistäminen.driver.get ("http://demo.guru99.com/V4/");WebElement-painike = driver.findElement (By.name ("btnLogin"));// Kirjaudu sisään Guru99: eendriver.findElement (By.name ("uid")). sendKeys ("mngr34926");driver.findElement (By.name ("salasana")). sendKeys ("amUpenu");// Suorita Napsauta LOGIN-painiketta JavascriptExecutorin avullajs.executeScript ("argumentit [0]. napsauta ();", painike);// Hälytysikkunan luominen JavascriptExecutorilla. Näytä hälytysviestijs.executeScript ("alert ('Tervetuloa Guru99: een');");}}

Output: Kun koodi suoritetaan onnistuneesti. Tulet tarkkailemaan

  • Napsauta onnistuneesti kirjautumispainiketta ja
  • Hälytysikkuna tulee näkyviin (katso alla oleva kuva).

2) Esimerkki: Sieppaa kaapitiedot ja siirry eri sivuille käyttämällä JavaScriptExecutoria.

Suorita alla oleva seleenikomentosarja. Tässä esimerkissä

  • Käynnistä sivusto
  • Hae sivuston tiedot, kuten sivuston URL, otsikon nimi ja sivuston verkkotunnus.
  • Siirry sitten toiselle sivulle.
tuo org.openqa.selenium.JavascriptExecutor;tuo org.openqa.selenium.WebDriver;tuo org.openqa.selenium.firefox.FirefoxDriver;tuo org.testng.annotations.Test;julkisen luokan JavaSE_Test {@Testatapublic void Kirjaudu (){WebDriver-ohjain = uusi FirefoxDriver ();// JavascriptExecutor-käyttöliittymäobjektin luominen tyypin valinnan avullaJavascriptExecutor js = (JavascriptExecutor) -ohjain;// Sivuston käynnistäminen.driver.get ("http://demo.guru99.com/V4/");// Haetaan sivuston verkkotunnusta. Tostring () muuttaa objektin nimeksi.Merkkijonon verkkotunnus = js.executeScript ("return document.domain;"). ToString ();System.out.println ("Sivuston verkkotunnus =" + Verkkotunnuksen nimi);// Sivuston URL-osoitteen haku. Tostring () muuttaa objektin nimeksiString url = js.executeScript ("return document.URL;"). ToString ();System.out.println ("Sivuston URL =" + url);// Method document.title noutaa sivuston otsikon nimen. Tostring () muuttaa objektin nimeksiString TitleName = js.executeScript ("return document.title;"). ToString ();System.out.println ("Sivun otsikko =" + Otsikon nimi);// Siirry uudelle sivulle eli luo pääsysivu. (käynnistä uusi URL)js.executeScript ("window.location = 'http://demo.guru99.com/'");}}

Tulos: Kun yllä oleva koodi suoritetaan onnistuneesti, se hakee sivuston tiedot ja siirtyy toiselle sivulle alla olevan kuvan mukaisesti.

[TestNG] Juoksu:C: \ Users \ gauravn \ AppData \ Local \ Temp \ testng-eclipse-467151014 \ testng-Customsuite.xmllog4j: VAROITUS Hakijalle ei löytynyt liitteitä (org.apache.http.client.protocol.RequestAddCookies).log4j: WARN Alusta log4j-järjestelmä oikein.log4j: VAROITUS Katso lisätietoja osoitteesta http://logging.apache.org/log4j/1.2/faq.html#noconfig.Sivuston verkkotunnus = demo.guru99.comSivuston URL = http://demo.guru99.com/V4/Sivun otsikko = Guru99 Pankin kotisivuYLITETTY: Kirjaudu=================================================OletustestiTestit suoritetaan: 1, epäonnistumiset: 0, ohitukset: 0================================================= 

3) Esimerkki: Vieritä alaspäin käyttämällä JavaScriptExecutoria.

Suorita alla oleva seleenikomentosarja. Tässä esimerkissä

  • Käynnistä sivusto
  • Vieritä 600 pikseliä alaspäin
tuo org.openqa.selenium.JavascriptExecutor;tuo org.openqa.selenium.WebDriver;tuo org.openqa.selenium.firefox.FirefoxDriver;tuo org.testng.annotations.Test;julkisen luokan JavaSE_Test {@Testatapublic void Kirjaudu (){WebDriver-ohjain = uusi FirefoxDriver ();// JavascriptExecutor-käyttöliittymäobjektin luominen tyypin valinnan avullaJavascriptExecutor js = (JavascriptExecutor) -ohjain;// Sivuston käynnistäminen.driver.get ("http://moneyboats.com/");// Suurenna ikkunaohjain.hallinta (). ikkuna (). maksimoi ();// Pystysuuntainen vieritys alaspäin 600 pikseliäjs.executeScript ("window.scrollBy (0,600)");}}

Lähtö : Kun yllä oleva koodi suoritetaan, se vierittää 600 pikseliä alaspäin (katso alla oleva kuva).

Yhteenveto:

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

  • JavaScriptExecutor tarjoaa kaksi tapaa käsitellä "executescript" ja "executeAsyncScript".
  • Suoritettiin JavaScripti Selenium Webdriverilla.
  • Kuva, kuinka napsauttaa elementtiä JavaScriptExecutorin kautta, jos seleeni ei napsauta elementtiä jonkin ongelman vuoksi.
  • Luotu 'Hälytys' -ikkuna JavaScriptExecutorilla.
  • Navigoitu toiselle sivulle käyttämällä JavaScriptExecutoria.
  • Selaa ikkunaa alaspäin JavaScriptExecutorilla.
  • Haettu URL-osoite, otsikko ja verkkotunnus käyttämällä JavaScriptExecutoria.