Mis on JavaScriptExecutor?
JavaScriptExecutor on liides, mis aitab JavaScripti käivitada läbi Seleeni veebidraiveri. JavaScripti käitamiseks valitud aknas või praegusel lehel pakub JavaScriptExecutor kahte meetodit "executescript" ja "executeAsyncScript".
Selles õpetuses saate teada -
- Mis on JavaScriptExecutor?
- Miks me vajame JavaScripti täitjat?
- JavaScriptExecutori meetodid
- ExecuteAsyncScripti näide
- Näide 1: Unerežiim testitavas brauseris.
- ExecuteScripti näide
- 1) Näide: Klõpsake nuppu sisselogimiseks ja hoiatusakna loomiseks
- 2) Näide: hõivake kraapimisandmeid ja navigeerige erinevatele lehtedele
- 3) Näide: kerige alla
Miks me vajame JavaScripti täitjat?
Selenium Webdriveris kasutatakse veebilehel toimingute tuvastamiseks ja toimingute tegemiseks selliseid lokaatoreid nagu XPath, CSS jne.
Juhul, kui need lokaatorid ei tööta, võite kasutada JavaScripti käitaja. Veebielemendil soovitud toimingu tegemiseks võite kasutada JavaScripti executorit.
Seleen toetab javaScriptExecutorit. Lisapluginat ega lisandmoodulit pole vaja. JavaScriptExecutori kasutamiseks peate lihtsalt skripti importima ( org.openqa.selenium.JavascriptExecutor ).
JavaScriptExecutori meetodid
- executeAsyncScript
Asünkroonse skripti abil renderdatakse teie leht kiiremini. Selle asemel, et sundida kasutajaid enne lehe renderdamist ootama skripti allalaadimist. See funktsioon käivitab asünkroonse JavaScripti jupi Seleenis praegu valitud raami või akna kontekstis. Nii täidetud JS on üheahelaline koos erinevate tagasihelistamisfunktsioonidega, mis töötab sünkroonselt.
- executeScript
See meetod käivitab JavaScripti Seleenis praegu valitud raami või akna kontekstis. Selles meetodis kasutatud skript töötab anonüümse funktsiooni (nimeta funktsioon) kehas. Samuti võime sellele edastada keerulisi argumente.
Skript võib väärtusi tagastada. Tagastatud andmetüübid on
- Boolean
- Pikk
- String
- Nimekiri
- Veebielement.
JavascriptExecutori põhisüntaks on toodud allpool:
Süntaks:
JavascriptExecutor js = (JavascriptExecutor) draiver;js.executeScript (skript, argumendid);
- Skript - see on käivitamiseks vajalik JavaScript.
- Argumendid - need on skripti argumendid. See on vabatahtlik.
ExecuteAsyncScripti näide
ExecuteAsyncScripti kasutamine aitab teie testi toimivust parandada. See võimaldab kirjutamise testi sarnaselt tavalisele kodeerimisele.
ExecSync blokeerib edasised toimingud, mida brauser Selenium teeb, kuid execAsync ei blokeeri toiminguid. Kui skript on valmis, saadab see serveripoolse testimiskomplekti tagasihelistamise. See tähendab, et skripti kõik täidab brauser, mitte server.
Näide 1: Unerežiim testitavas brauseris.
Selle stsenaariumi korral kasutame executeAsyncScripti illustreerimiseks "Guru99" demosaiti. Selles näites saate
- Käivitage brauser.
- Avage sait "http://demo.guru99.com/V4/".
- Rakendus ootab järgmise toimingu sooritamiseks 5 sekundit.
Samm 1) Jäädvustage algusaeg enne 5 sekundi (5000 millisekundi) ootamist, kasutades meetodit executeAsyncScript ().
Samm 2) Seejärel kasutage 5 sekundit ootamiseks executeAsyncScript ().
Samm 3) Seejärel hankige praegune kellaaeg.
Samm 4) Lahutage (praegune aeg - algusaeg) = möödunud aeg.
5. samm. Veenduge, et 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;avalik klass JavaSE_Test {@Testavalik tühine Sisselogimine (){WebDriveri draiver = uus FirefoxDriver ();// JavascriptExecutori liidese objekti loomine tüübivalamise abilJavascriptExecutor js = (JavascriptExecutor) draiver;// Saidi käivitamine.driver.get ("http://demo.guru99.com/V4/");// Akna maksimeeriminedraiver.halda (). aken (). maksimeeri ();// Määrake skripti ajalõpp 20 sekundiksdriver.manage (). timeout (). setScriptTimeout (20, TimeUnit.SECONDS);// Deklareerige ja määrake algusaegpikk algusaeg = System.currentTimeMillis ();// Kutsu meetod executeAsyncScript (), et oodata 5 sekunditjs.executeAsyncScript ("window.setTimeout (argumendid [argumendid.pikkus - 1], 5000);");// Hangi aegade erinevus (currentTime - startTime).System.out.println ("Läbitud aeg: + (System.currentTimeMillis () - alguse_aeg));}}
Väljund: möödunud aeg kuvati edukalt üle 5 sekundi (5000 millisekundit), nagu allpool näidatud:
[TestNG] Jooksmine:C: \ Users \ gauravn \ AppData \ Local \ Temp \ testng-eclipse-387352559 \ testng-Customsuite.xmllog4j: HOIATUS Logijale ei leitud lisandeid (org.apache.http.client.protocol.RequestAddCookies).log4j: HOIATUS Palun lähtestage log4j süsteem õigesti.log4j: HOIATUS Vaadake lisateavet saidilt http://logging.apache.org/log4j/1.2/faq.html#noconfig.Läbitud aeg: 5022MÖÖDUD: Logi sisse=================================================VaikekatseTestid jooksevad: 1, ebaõnnestumised: 0, vahelejätmised: 0=================================================
ExecuteScripti näide
ExecuteScripti jaoks näeme ükshaaval kolme erinevat näidet.
1) Näide: Klõpsake nuppu, et sisse logida ja JavaExecutori abil hoiatusaken luua.
Selle stsenaariumi korral kasutame JavaExecutori illustreerimiseks "Guru99" demosaiti. Selles näites
- Käivitage veebibrauser
- avage sait "http://demo.guru99.com/V4/" ja
- sisselogimine mandaatidega
- Kuva hoiatusaken eduka sisselogimise korral.
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;avalik klass JavaSE_Test {@Testavalik tühine Sisselogimine (){WebDriveri draiver = uus FirefoxDriver ();// JavascriptExecutori liidese objekti loomine tüübivalamise abilJavascriptExecutor js = (JavascriptExecutor) draiver;// Saidi käivitamine.driver.get ("http://demo.guru99.com/V4/");Nupp WebElement = driver.findElement (By.name ("btnLogin"));// Logige sisse Guru99-ssedraiver.findElement (By.name ("uid")). sendKeys ("mngr34926");driver.findElement (By.name ("parool")). sendKeys ("amUpenu");// Tehke JavascriptExecutori abil klõpsake nuppu Logi sissejs.executeScript ("argumendid [0] .klõps ();", nupp);// Hoiatuse akna loomine JavascriptExecutori abil. Kuva hoiatusteadejs.executeScript ("alert ('Tere tulemast Guru99-sse');");}}
Väljund: kui kood on edukalt täidetud. Sa jälgid
- Edukas klõps sisselogimisnupul ja nupul
- Kuvatakse hoiatusaken (vt allolevat pilti).
2) Näide: hõivake kraapimisandmeid ja navigeerige erinevatele lehtedele JavaScripti abil.
Käivitage allpool olev seleeni skript. Selles näites
- Käivitage sait
- Too saidi üksikasjad, näiteks saidi URL, pealkirja nimi ja saidi domeeninimi.
- Seejärel navigeerige teisele lehele.
import org.openqa.selenium.JavascriptExecutor;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;avalik klass JavaSE_Test {@Testavalik tühine Sisselogimine (){WebDriveri draiver = uus FirefoxDriver ();// JavascriptExecutori liidese objekti loomine tüübivalamise abilJavascriptExecutor js = (JavascriptExecutor) draiver;// Saidi käivitamine.driver.get ("http://demo.guru99.com/V4/");// Saidi domeeninime toomine. Tostring () muuda objekt nimeks.Stringi domeeninimi = js.executeScript ("tagastage dokument.domeen;"). ToString ();System.out.println ("Saidi domeeninimi =" + Domeeninimi);// Saidi URL-i toomine. Tostring () muuda objekt nimeksString url = js.executeScript ("return document.URL;"). ToString ();System.out.println ("saidi URL =" + url);// Meetod document.title tooge saidi pealkirja nimi. Tostring () muuda objekt nimeksString TitleName = js.executeScript ("return document.title;"). ToString ();System.out.println ("Lehe pealkiri =" + PealkirjaNimi);// Navigeerige uuele lehele, st juurdepääsu lehe loomiseks. (käivitage uus URL)js.executeScript ("window.location = 'http://demo.guru99.com/'");}}
Väljund: kui ülaltoodud kood on edukalt täidetud, tõmbab see saidi üksikasjad ja navigeerib teisele lehele, nagu allpool näidatud.
[TestNG] Jooksmine:C: \ Users \ gauravn \ AppData \ Local \ Temp \ testng-eclipse-467151014 \ testng-Customsuite.xmllog4j: HOIATUS Logijale ei leitud lisandeid (org.apache.http.client.protocol.RequestAddCookies).log4j: HOIATUS Palun lähtestage log4j süsteem õigesti.log4j: HOIATUS Vaadake lisateavet saidilt http://logging.apache.org/log4j/1.2/faq.html#noconfig.Saidi domeeninimi = demo.guru99.comSaidi URL = http://demo.guru99.com/V4/Lehe pealkiri = Panga Guru99 avalehtMÖÖDUD: Logi sisse=================================================VaikekatseTestid jooksevad: 1, ebaõnnestumised: 0, vahelejätmised: 0=================================================
3) Näide: kerige alla JavaScripti rakendajat kasutades.
Käivitage allpool olev 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;avalik klass JavaSE_Test {@Testavalik tühine Sisselogimine (){WebDriveri draiver = uus FirefoxDriver ();// JavascriptExecutori liidese objekti loomine tüübivalamise abilJavascriptExecutor js = (JavascriptExecutor) draiver;// Saidi käivitamine.draiver.get ("http://moneyboats.com/");// Akna maksimeeriminedraiver.halda (). aken (). maksimeeri ();// Vertikaalne kerimine 600 piksli võrra allapoolejs.executeScript ("window.scrollBy (0,600)");}}
Väljund : kui ülaltoodud kood on täidetud, kerib see 600 piksli võrra alla (vt allolevat pilti).
Kokkuvõte:
JavaScriptExecutorit kasutatakse juhul, kui Seleeni veebidraiver ei saa mõne probleemi tõttu mõnel elemendil klõpsata.
- JavaScriptExecutor pakub käsitsemiseks kahte meetodit "executescript" ja "executeAsyncScript".
- Käivitas JavaScripti, kasutades Seleeni veebidraiverit.
- Illustreeritud, kuidas klõpsata elemendil JavaScriptExecutori kaudu, kui seleen mõne probleemi tõttu elemendil ei klõpsa.
- Loonud akna 'Hoiatus', kasutades JavaScripti käitaja.
- Navigeeriti JavaScriptExecutori abil teisele lehele.
- Kerige aknas JavaScriptExecutori abil alla.
- Laaditi URL, pealkiri ja domeeninimi JavaScripti abil.