JavaScriptExecutor sisse Selenium koos Näitega
Mis on JavaScriptExecutor?
JavaScriptExecutor on liides, mis aitab käivitada JavaSkript läbi Selenium Veebidraiver. JavaScriptExecutor pakub JavaScripti käivitamiseks valitud aknas või praegusel lehel kahte meetodit "executescript" ja "executeAsyncScript".
Miks me vajame JavaScriptExecutor?
In Selenium Veebilehe tuvastamiseks ja toimingute tegemiseks kasutatakse veebidraiverit, lokaatoreid nagu XPath, CSS jne.
Kui need lokaatorid ei tööta, võite kasutada JavaScriptExecutor. Võite kasutada JavaScriptExecutor veebielemendiga soovitud toimingu tegemiseks.
Selenium toetab javaScriptExecutorit. Täiendavat pistikprogrammi või lisandmoodulit pole vaja. Peate lihtsalt importima (org.openqa.selenium.JavascriptTäitja) skriptis kasutamiseks JavaScriptExecutor.
JavaScriptExecutori meetodid sisse Selenium
executeScript
See meetod teostab JavaScript parajasti valitud raami või akna kontekstis Selenium. Selle meetodi puhul kasutatav skript töötab anonüümse funktsiooni (nimeta funktsioon) kehas. Võime sellele edastada ka keerulisi argumente.
Skript võib väärtusi tagastada. Tagastatud andmetüübid on
- Boolean
- Pikk
- nöör
- nimekiri
- WebElement.
JavascriptTäitja süntaks:
JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript(Script,Arguments);
- Script - See on JavaSkript, mis tuleb käivitada.
- Argumendid – Need on stsenaariumi argumendid. See on valikuline.
käivitage AsyncScript
Asünkroonse skriptiga renderdatakse teie leht kiiremini. Selle asemel, et sundida kasutajaid ootama skripti allalaadimist enne lehe renderdamist. See funktsioon käivitab asünkroonse osa JavaSkript praegu valitud raami või akna kontekstis Selenium. Nii käivitatud JS on ühe lõimega mitmesuguse tagasihelistamise funktsiooniga, mis töötab sünkroonselt.
Kuidas kasutada JavaScriptExecutor sisse Selenium
Siin on samm-sammult kasutamise protsess JavaScriptExecutor sisse Selenium:
Step 1) Importige pakend.
import org.openqa.selenium.JavascriptExecutor;
Step 2) Looge viide.
JavascriptExecutor js = (JavascriptExecutor) driver;
Step 3) Helistage JavascriptTäitja meetod.
js.executeScript(script, args);
Näide elemendi klõpsamisest JavaScripExecutor sisse Selenium
executeScripti puhul näeme ükshaaval kolme erinevat näidet.
1) Näide: sisselogimiseks ja hoiatusakna genereerimiseks klõpsake nuppu JavaScriptExecutor.
Selle stsenaariumi puhul kasutame illustreerimiseks “Guru99” demosaiti JavaScriptExecutor. Selles näites
- Käivitage veebibrauser
- avage sait https://demo.guru99.com/V4/ ja
- mandaatidega sisse logida
- Eduka sisselogimise korral kuvage hoiatusaken.
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');"); } }
Väljund: Kui kood on edukalt käivitatud. Sa jälgid
- Edukalt klõpsake sisselogimisnupul ja
- Kuvatakse hoiatusaken (vt pilti allpool).
2) Näide: jäädvustage kraapimisandmed ja navigeerige selle abil erinevatele lehtedele JavaScriptExecutor.
Käivitage allolev seleeni skript. Selles näites
- Käivitage sait
- Hankige saidi üksikasjad, nagu saidi URL, pealkirja nimi ja saidi domeeninimi.
- Seejärel liikuge teisele lehele.
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/'"); } }
Väljund: Kui ülaltoodud kood on edukalt käivitatud, hangib see saidi üksikasjad ja navigeerib teisele lehele, nagu allpool näidatud.
[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) Näide: kerige alla kasutades JavaScriptExecutor.
Käivitage allolev 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; 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)"); } }
Väljund: Kui ülaltoodud kood käivitatakse, keritakse see 600 piksli võrra allapoole (vt allolevat pilti).
executeAsyncScripti näide Selenium
executeAsyncScripti kasutamine aitab teie testi jõudlust parandada. See võimaldab kirjutada testi rohkem nagu tavaline kodeerimine.
TegevjuhtSync blokeerib edasised toimingud, mida teostab Selenium brauser, kuid execAsync ei blokeeri tegevust. See saadab tagasihelistamise serveri poolele Testimine komplekti, kui skript on valmis. See tähendab, et kõike skripti sees käivitab brauser, mitte server.
Näide 1: testitavas brauseris unerežiim.
Selle stsenaariumi korral kasutame executeAsyncScripti illustreerimiseks "Guru99" demosaiti. Selles näites saate seda teha
- Käivitage brauser.
- Avatud sait https://demo.guru99.com/V4/.
- Rakendus ootab järgmise toimingu sooritamiseks 5 sekundit.
Step 1) Jäädvustage algusaeg, enne kui ootate 5 sekundit (5000 millisekundit), kasutades meetodit executeAsyncScript().
Step 2) Seejärel kasutage 5 sekundi ootamiseks käsku executeAsyncScript().
Step 3) Seejärel hankige praegune kellaaeg.
Step 4) Lahuta (praegune aeg – algusaeg) = möödunud aeg.
Step 5) Kontrollige, kas 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; 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)); } }
Väljund: Möödunud aeg kuvati edukalt rohkem kui 5 sekundit (5000 millisekundit), nagu allpool näidatud:
[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 ===============================================
kokkuvõte
JavaScriptExecutorit kasutatakse siis, kui Selenium Veebidraiver ei suuda mõne probleemi tõttu ühelgi elemendil klõpsata.
- JavaScriptExecutor pakub käsitlemiseks kahte meetodit "executescript" ja "executeAsyncScript".
- Täiustatud JavaSkripti kasutamine Selenium Veebidraiver.
- Illustreeritud, kuidas elemendil läbi klõpsata JavaScriptExecutor, kui seleenil ei õnnestu mõne probleemi tõttu elemendil klõpsata.
- Loodud 'Hoiatuse' aken kasutades JavaScriptExecutor.
- Navigeeriti teisele lehele kasutades JavaScriptExecutor.
- Keris akna alla, kasutades JavaScriptExecutor.
- Toodi URL, pealkiri ja domeeninimi kasutades JavaScriptExecutor.