„JavaScriptExecutor“ programoje „Selenium WebDriver“ su pavyzdžiu

Kas yra „JavaScriptExecutor“?

„JavaScriptExecutor“ yra sąsaja, padedanti vykdyti „JavaScript“ per „Selenium Webdriver“. „JavaScriptExecutor“ pateikia du „executescript“ ir „executeAsyncScript“ metodus, kaip paleisti „JavaScript“ pasirinktame lange ar dabartiniame puslapyje.

Šioje pamokoje sužinosite -

  • Kas yra „JavaScriptExecutor“?
  • Kodėl mums reikia „JavaScriptExecutor“?
  • „JavaScriptExecutor“ metodai
  • „ExecuteAsyncScript“ pavyzdys
    • 1 pavyzdys: miego režimas bandomojoje naršyklėje.
  • „ExecuteScript“ pavyzdys
    • 1) Pavyzdys: Spustelėkite mygtuką, kad prisijungtumėte ir sugeneruotumėte įspėjimo langą
    • 2) Pavyzdys: užfiksuokite kasimo duomenis ir eikite į skirtingus puslapius
    • 3) Pavyzdys: slinkite žemyn naudodami

Kodėl mums reikia „JavaScriptExecutor“?

„Selenium Webdriver“ tokie lokatoriai, kaip „XPath“, CSS ir kt., Naudojami norint nustatyti ir atlikti veiksmus tinklalapyje.

Jei šie lokatoriai neveikia, galite naudoti „JavaScriptExecutor“. Norėdami atlikti norimą operaciją žiniatinklio elemente, galite naudoti „JavaScriptExecutor“.

Selenas palaiko „javaScriptExecutor“. Papildomo papildinio ar priedo nereikia. Jums tiesiog reikia importuoti ( org.openqa.selenium.JavascriptExecutor ) į scenarijų, kad galėtumėte naudoti „JavaScriptExecutor“.

„JavaScriptExecutor“ metodai

  1. executeAsyncScript

Naudojant asinchroninį scenarijų, jūsų puslapis pateikiamas greičiau. Užuot privertę vartotojus laukti, kol scenarijus bus atsisiųstas, prieš pateikiant puslapį. Ši funkcija vykdys asinchroninį „JavaScript“ fragmentą šiuo metu pasirinkto „Selenium“ rėmo ar lango kontekste. Taip vykdomas JS yra su viena gija su įvairia atgalinio ryšio funkcija, kuri veikia sinchroniškai.

  1. executeScript

Šis metodas vykdo „JavaScript“ šiuo metu pasirinkto „Selenium“ rėmo ar lango kontekste. Šiame metode naudojamas scenarijus veikia anoniminės funkcijos (funkcijos be pavadinimo) tekste. Mes taip pat galime perduoti jai sudėtingus argumentus.

Scenarijus gali grąžinti reikšmes. Pateikti duomenų tipai yra

  • Būlio
  • Ilgas
  • Stygos
  • Sąrašas
  • „WebElement“.

Pagrindinė „JavascriptExecutor“ sintaksė pateikiama žemiau:

Sintaksė:

„JavascriptExecutor“ js = („JavascriptExecutor“) tvarkyklė;js.executeScript (scenarijus, argumentai);
  • Scenarijus - tai yra „JavaScript“, kurį reikia vykdyti.
  • Argumentai - tai scenarijaus argumentai. Tai neprivaloma.

„ExecuteAsyncScript“ pavyzdys

„ExecuteAsyncScript“ naudojimas padeda pagerinti jūsų testo našumą. Tai leidžia rašymo testą panašiau į įprastą kodavimą.

„ExecSync“ blokuoja tolesnius veiksmus, kuriuos atlieka „Selenium“ naršyklė, tačiau „execAsync“ neužblokuoja veiksmų. Kai scenarijus bus baigtas, jis atsiųs atgalinį serverio bandymų rinkinį. Tai reiškia, kad viską, kas yra scenarijaus viduje, vykdys naršyklė, o ne serveris.

1 pavyzdys: miego režimas bandomojoje naršyklėje.

Šiame scenarijuje mes naudosime „Guru99“ demonstracinę svetainę, norėdami iliustruoti executeAsyncScript. Šiame pavyzdyje jūs tai padarysite

  • Paleiskite naršyklę.
  • Atidarykite svetainę „http://demo.guru99.com/V4/“.
  • Programa laukia 5 sekundžių, kad atliktų tolesnį veiksmą.

1 žingsnis. Užfiksuokite pradžios laiką prieš laukdami 5 sekundes (5000 milisekundžių) naudodami „executeAsyncScript“ () metodą.

2 žingsnis) Tada palaukite 5 sekundes naudodami „executeAsyncScript“ ().

3 žingsnis) Tada gaukite dabartinį laiką.

4 žingsnis) Atimkite (dabartinis laikas - pradžios laikas) = ​​praėjęs laikas.

5 žingsnis. Patikrinkite, ar produkcija turėtų rodyti daugiau nei 5000 milisekundžių

importuoti java.util.concurrent.TimeUnit;importuoti org.openqa.selenium.JavascriptExecutor;importuoti org.openqa.selenium.WebDriver;importuoti org.openqa.selenium.firefox.FirefoxDriver;importuoti org.testng.annotations.Test;viešosios klasės „JavaSE_Test“ {@Testpublic void Prisijungti (){„WebDriver“ tvarkyklė = nauja „FirefoxDriver“ ();// Sąsajos „JavascriptExecutor“ objekto kūrimas liejant tipą„JavascriptExecutor“ js = („JavascriptExecutor“) tvarkyklė;// Svetainės paleidimas.driver.get („http://demo.guru99.com/V4/“);// Padidinti langąvairuotojas.tvarkyti (). langas (). padidinti ();// Nustatykite scenarijaus skirtąjį laiką į 20 sekundžiųtvarkyklė.tvarkyti (). skirtasis laikas (). setScriptTimeout (20, „TimeUnit.SECONDS“);// Paskelbkite ir nustatykite pradžios laikąilgas pradžios laikas = System.currentTimeMillis ();// Skambinkite „executeAsyncScript“ () metodu, kad palauktumėte 5 sekundesjs.executeAsyncScript ("window.setTimeout (argumentai [argumentai.length - 1], 5000);");// Gaukite kartų skirtumą (currentTime - startTime).System.out.println ("Praėjęs laikas: + (System.currentTimeMillis () - pradžios laikas));}}

Išvestis: sėkmingai parodytas praėjęs laikas daugiau nei 5 sekundes (5000 milisekundžių), kaip parodyta žemiau:

[TestNG] Bėgimas:C: \ Users \ gauravn \ AppData \ Local \ Temp \ testng-eclipse-387352559 \ testng-Customsuite.xmllog4j: ĮSPĖJIMAS Registratoriui nepavyko rasti priedų (org.apache.http.client.protocol.RequestAddCookies).log4j: ĮSPĖJIMAS Prašome tinkamai inicijuoti log4j sistemą.„log4j“: ĮSPĖJITE Daugiau informacijos ieškokite http://logging.apache.org/log4j/1.2/faq.html#noconfig.Praėjęs laikas: 5022ATLIKTA: Prisijunkite=================================================Numatytasis testasTestai vykdomi: 1, gedimai: 0, praleidimai: 0=================================================

„ExecuteScript“ pavyzdys

„ExecuteScript“ pamatysime po tris skirtingus pavyzdžius.

1) Pavyzdys: Spustelėkite mygtuką, kad prisijungtumėte ir sugeneruotumėte įspėjimo langą naudodami „JavaScriptExecutor“.

Šiame scenarijuje naudosime „Guru99“ demonstracinę svetainę, norėdami iliustruoti „JavaScriptExecutor“. Šiame pavyzdyje

  • Paleiskite žiniatinklio naršyklę
  • atidarykite svetainę „http://demo.guru99.com/V4/“ ir
  • prisijungti su įgaliojimais
  • Rodyti įspėjimo langą, kai sėkmingai prisijungiate.
importuoti org.openqa.selenium.By;importuoti org.openqa.selenium.JavascriptExecutor;importuoti org.openqa.selenium.WebDriver;importuoti org.openqa.selenium.WebElement;importuoti org.openqa.selenium.firefox.FirefoxDriver;importuoti org.testng.annotations.Test;viešosios klasės „JavaSE_Test“ {@Testpublic void Prisijungti (){„WebDriver“ tvarkyklė = nauja „FirefoxDriver“ ();// Sąsajos „JavascriptExecutor“ objekto kūrimas liejant tipą„JavascriptExecutor“ js = („JavascriptExecutor“) tvarkyklė;// Svetainės paleidimas.driver.get („http://demo.guru99.com/V4/“);„WebElement“ mygtukas = driver.findElement (By.name („btnLogin“));// Prisijunkite prie „Guru99“driver.findElement (By.name ("uid")). sendKeys ("mngr34926");driver.findElement (By.name ("slaptažodis")). sendKeys ("amUpenu");// Vykdykite paspaudę mygtuką Prisijungti naudodami „JavascriptExecutor“js.executeScript ("argumentai [0] .spustelėkite ();", mygtukas);// Norėdami sukurti įspėjimo langą naudodami „JavascriptExecutor“. Rodyti įspėjimo pranešimąjs.executeScript ("įspėjimas ('Sveiki atvykę į Guru99');");}}

Išvestis: Kai kodas sėkmingai vykdomas. Jūs stebėsite

  • Sėkmingai spustelėkite prisijungimo mygtuką ir
  • Bus rodomas įspėjimo langas (žr. Paveikslėlį žemiau).

2) Pavyzdys: užfiksuokite kasimo duomenis ir eikite į skirtingus puslapius naudodami „JavaScriptExecutor“.

Vykdykite žemiau pateiktą seleno scenarijų. Šiame pavyzdyje

  • Paleiskite svetainę
  • Gaukite svetainės išsamią informaciją, pvz., Svetainės URL, pavadinimo pavadinimą ir svetainės domeno pavadinimą.
  • Tada eikite į kitą puslapį.
importuoti org.openqa.selenium.JavascriptExecutor;importuoti org.openqa.selenium.WebDriver;importuoti org.openqa.selenium.firefox.FirefoxDriver;importuoti org.testng.annotations.Test;viešosios klasės „JavaSE_Test“ {@Testpublic void Prisijungti (){„WebDriver“ tvarkyklė = nauja „FirefoxDriver“ ();// Sąsajos „JavascriptExecutor“ objekto kūrimas liejant tipą„JavascriptExecutor“ js = („JavascriptExecutor“) tvarkyklė;// Svetainės paleidimas.driver.get („http://demo.guru99.com/V4/“);// Gaunamas svetainės domeno vardas. Tostring () pakeiskite objektą į pavadinimą.String DomainName = js.executeScript ("grąžinti dokumentą.domenas;"). ToString ();System.out.println ("Svetainės domeno vardas =" + Domeno vardas);// Gaunamas svetainės URL. Tostring () pakeiskite objektą į pavadinimąString url = js.executeScript ("grąžinti dokumentą.URL;"). ToString ();System.out.println ("svetainės URL =" + url);// Metodas document.title pareikšti svetainės pavadinimą. Tostring () pakeiskite objektą į pavadinimąString TitleName = js.executeScript ("return document.title;"). ToString ();System.out.println ("Puslapio pavadinimas =" + Pavadinimo pavadinimas);// Eikite į naują puslapį, ty sukurkite prieigos puslapį. (paleisti naują URL)js.executeScript ("window.location = 'http://demo.guru99.com/'");}}

Išvestis: Kai aukščiau pateiktas kodas bus sėkmingai įvykdytas, jis gaus svetainės išsamią informaciją ir pereis į kitą puslapį, kaip parodyta žemiau.

[TestNG] Bėgimas:C: \ Users \ gauravn \ AppData \ Local \ Temp \ testng-eclipse-467151014 \ testng-Customsuite.xmllog4j: ĮSPĖJIMAS Registratoriui nepavyko rasti priedų (org.apache.http.client.protocol.RequestAddCookies).log4j: ĮSPĖJIMAS Prašome tinkamai inicijuoti log4j sistemą.„log4j“: ĮSPĖJITE Daugiau informacijos ieškokite http://logging.apache.org/log4j/1.2/faq.html#noconfig.Svetainės domeno vardas = demo.guru99.comSvetainės URL = http://demo.guru99.com/V4/Puslapio pavadinimas = banko „Guru99“ pagrindinis puslapisATLIKTA: Prisijunkite=================================================Numatytasis testasTestai vykdomi: 1, gedimai: 0, praleidimai: 0================================================= 

3) Pavyzdys: slinkite žemyn naudodami „JavaScriptExecutor“.

Vykdykite žemiau pateiktą seleno scenarijų. Šiame pavyzdyje

  • Paleiskite svetainę
  • Slinkite žemyn 600 taškų
importuoti org.openqa.selenium.JavascriptExecutor;importuoti org.openqa.selenium.WebDriver;importuoti org.openqa.selenium.firefox.FirefoxDriver;importuoti org.testng.annotations.Test;viešosios klasės „JavaSE_Test“ {@Testpublic void Prisijungti (){„WebDriver“ tvarkyklė = nauja „FirefoxDriver“ ();// Sąsajos „JavascriptExecutor“ objekto kūrimas liejant tipą„JavascriptExecutor“ js = („JavascriptExecutor“) tvarkyklė;// Svetainės paleidimas.vairuotojas.get ("http://moneyboats.com/");// Padidinti langąvairuotojas.tvarkyti (). langas (). padidinti ();// Vertikaliai slinkite žemyn 600 taškųjs.executeScript ("window.scrollBy (0,600)");}}

Išvestis : Kai bus įvykdytas aukščiau pateiktas kodas, jis slinks žemyn 600 taškų (žr. Paveikslėlį žemiau).

Santrauka:

„JavaScriptExecutor“ naudojamas, kai „Selenium Webdriver“ nepavyksta spustelėti jokio elemento dėl kokios nors problemos.

  • „JavaScriptExecutor“ pateikia du metodus „executescript“ ir „executeAsyncScript“, kuriuos reikia tvarkyti.
  • „JavaScript“ vykdė naudodamas „Selenium Webdriver“.
  • Iliustruota, kaip paspausti elementą naudojant „JavaScriptExecutor“, jei dėl tam tikrų problemų selenas nespusteli elemento.
  • Naudodamas „JavaScriptExecutor“ sugeneravo langą „Įspėjimas“.
  • Naudodamas „JavaScriptExecutor“, pereidavote į kitą puslapį.
  • Slinkite žemyn lange naudodami „JavaScriptExecutor“.
  • Pateiktas URL, pavadinimas ir domeno vardas naudojant „JavaScriptExecutor“.

Įdomios straipsniai...