Mi az a JavaScriptExecutor?
A JavaScriptExecutor egy olyan felület, amely segíti a JavaScript futtatását a Selenium Webdriver segítségével. A JavaScriptExecutor két módszert kínál: "executescript" és "executeAsyncScript" a javascript futtatásához a kiválasztott ablakban vagy az aktuális oldalon.
Ebben az oktatóanyagban megtudhatja -
- Mi az a JavaScriptExecutor?
- Miért van szükségünk JavaScriptExecutor-ra?
- JavaScriptExecutor módszerek
- Példa az executeAsyncScript fájlra
- 1. példa: Alvó állapot végrehajtása a tesztelt böngészőben.
- Példa az executeScript-re
- 1) Példa: Kattintson egy gombra a bejelentkezéshez és az Alert ablak létrehozásához
- 2) Példa: Kaparja el a kaparási adatokat, és navigáljon különböző oldalakra
- 3) Példa: Görgessen lefelé
Miért van szükségünk JavaScriptExecutor-ra?
A Selenium Webdriver programban olyan lokátorokat használnak, mint az XPath, a CSS stb., Hogy azonosítsák és végrehajtsák a műveleteket egy weboldalon.
Abban az esetben, ha ezek a lokátorok nem működnek, használhatja a JavaScriptExecutor programot. A JavaScriptExecutor segítségével elvégezheti a kívánt műveletet egy webes elemen.
A szelén támogatja a javaScriptExecutor programot. Nincs szükség külön bővítményre vagy kiegészítőre. A JavaScriptExecutor használatához csak importálnia kell ( org.openqa.selenium.JavascriptExecutor ) a parancsfájlba.
JavaScriptExecutor módszerek
- executeAsyncScript
Az aszinkron szkript segítségével az oldal gyorsabban jelenik meg. Ahelyett, hogy arra kényszerítené a felhasználókat, hogy az oldal megjelenése előtt várjanak meg egy szkript letöltését. Ez a függvény egy aszinkron JavaScript-darabot hajt végre a Seleniumban jelenleg kiválasztott keret vagy ablak összefüggésében. Az így végrehajtott JS egyszálú, különféle visszahívási funkcióval, amely szinkronban fut.
- executeScript
Ez a módszer a JavaScript használatát a Selenium pillanatnyilag kiválasztott keretével vagy ablakával hajtja végre. Az ebben a módszerben használt szkript egy névtelen függvény (egy név nélküli függvény) törzsében fut. Bonyolult érveket is átadhatunk neki.
A szkript visszaadhat értékeket. A visszaadott adattípusok
- Logikai
- Hosszú
- Húr
- Lista
- WebElement.
A JavascriptExecutor alapvető szintaxisa az alábbiakban található:
Szintaxis:
JavascriptExecutor js = (JavascriptExecutor) illesztőprogram;js.executeScript (Script, Argumentumok);
- Szkript - Ez az a JavaScript, amelyet végre kell hajtani.
- Érvek - A szkript érvei. Nem kötelező.
Példa az executeAsyncScript fájlra
Az executeAsyncScript használata javítja a teszt teljesítményét. Ez lehetővé teszi az írás tesztjét, mint egy normál kódolás.
Az execSync blokkolja a Selenium böngésző által végrehajtott további műveleteket, de az execAsync nem blokkolja a műveletet. A parancsfájl elkészülte után visszahívást küld a kiszolgálóoldali tesztelő csomagnak. Ez azt jelenti, hogy a szkript belsejében mindent a böngésző hajt végre, és nem a szerver.
1. példa: Alvó állapot végrehajtása a tesztelt böngészőben.
Ebben a forgatókönyvben a "Guru99" bemutató webhelyet fogjuk használni az executeAsyncScript illusztrálására. Ebben a példában megteszi
- Indítsa el a böngészőt.
- Nyissa meg a "http://demo.guru99.com/V4/" webhelyet.
- Az alkalmazás 5 másodpercet vár egy további művelet végrehajtására.
1. lépés: Rögzítse a kezdési időt, mielőtt várna 5 másodpercet (5000 ezredmásodpercet) az executeAsyncScript () módszerrel.
2. lépés) Ezután az executeAsyncScript () segítségével várjon 5 másodpercet.
3. lépés) Ezután kapja meg az aktuális időt.
4. lépés) Kivonás (aktuális idő - kezdési idő) = telt idő.
5. lépés: Ellenőrizze, hogy a kimenet 5000 milliszekundumnál nagyobb legyen
importálja a 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;JavaSE_Test nyilvános osztály@Tesztpublic void Bejelentkezés (){WebDriver illesztőprogram = new FirefoxDriver ();// A JavascriptExecutor felületobjektum létrehozása Type casting segítségévelJavascriptExecutor js = (JavascriptExecutor) illesztőprogram;// A webhely elindítása.driver.get ("http://demo.guru99.com/V4/");// Ablak maximalizálásadriver.manage (). window (). maximize ();// Állítsa a Script Timeout értékét 20 másodpercredriver.manage (). timeouts (). setScriptTimeout (20, TimeUnit.SECONDS);// Nyújtsa be és állítsa be a kezdési időpontotlong start_time = System.currentTimeMillis ();// Hívja meg az executeAsyncScript () metódust, hogy várjon 5 másodpercetjs.executeAsyncScript ("window.setTimeout (argumentumok [argumentumok.hossz - 1], 5000);");// Szerezd meg az idők különbségét (currentTime - startTime).System.out.println ("Telt idő: + (System.currentTimeMillis () - start_time));}}
Kimenet: 5 másodpercnél hosszabb idő (5000 milliszekundum) sikeres megjelenítése az alábbiak szerint:
[TestNG] Futás:C: \ Users \ gauravn \ AppData \ Local \ Temp \ testng-eclipse-387352559 \ testng-Customsuite.xmllog4j: FIGYELMEZTETÉS Nem található függelék a naplózóhoz (org.apache.http.client.protocol.RequestAddCookies).log4j: WARN Kérjük, inicializálja a log4j rendszert megfelelően.log4j: FIGYELMEZTETÉS További információkért lásd: http://logging.apache.org/log4j/1.2/faq.html#noconfig.Telt idő: 5022MEGTETT: Bejelentkezés=================================================Alapértelmezett tesztFuttatott tesztek: 1, kudarcok: 0, kihagyások: 0=================================================
Példa az executeScript-re
Az executeScript esetében három különböző példát fogunk látni egyenként.
1) Példa: Kattintson egy gombra a bejelentkezéshez és az Alert ablak előállításához a JavaScriptExecutor segítségével.
Ebben a forgatókönyvben a "Guru99" bemutató webhelyet fogjuk használni a JavaScriptExecutor bemutatására. Ebben a példában
- Indítsa el a webböngészőt
- nyissa meg a "http://demo.guru99.com/V4/" webhelyet, és
- bejelentkezés hitelesítő adatokkal
- Figyelmeztető ablak megjelenítése a sikeres bejelentkezéshez.
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;JavaSE_Test nyilvános osztály@Tesztpublic void Bejelentkezés (){WebDriver illesztőprogram = new FirefoxDriver ();// A JavascriptExecutor felületobjektum létrehozása Type casting segítségévelJavascriptExecutor js = (JavascriptExecutor) illesztőprogram;// A webhely elindítása.driver.get ("http://demo.guru99.com/V4/");WebElement gomb = driver.findElement (By.name ("btnLogin"));// Bejelentkezés a Guru99-bedriver.findElement (By.name ("uid")). sendKeys ("mngr34926");driver.findElement (By.name ("jelszó")). sendKeys ("amUpenu");// Végezze el Kattintson a BEJELENTKEZÉS gombra a JavascriptExecutor használatávaljs.executeScript ("argumentumok [0] .click ();", gomb);// Riasztási ablak előállítása a JavascriptExecutor használatával. Jelenítse meg a riasztási üzenetetjs.executeScript ("alert ('Üdvözöljük a Guru99-ben';);");}}
Kimenet: A kód sikeres végrehajtása. Meg fogja figyelni
- Sikeres kattintás a bejelentkezés gombra és a
- Megjelenik a riasztási ablak (lásd az alábbi képet).
2) Példa: Kaparja el a kaparási adatokat, és navigáljon a különböző oldalakra a JavaScriptExecutor segítségével.
Hajtsa végre az alábbi szelén szkriptet. Ebben a példában
- Indítsa el az oldalt
- Szerezze be a webhely adatait, például a webhely URL-jét, a cím és a domain nevét.
- Ezután navigáljon egy másik oldalra.
import org.openqa.selenium.JavascriptExecutor;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;JavaSE_Test nyilvános osztály@Tesztpublic void Bejelentkezés (){WebDriver illesztőprogram = new FirefoxDriver ();// A JavascriptExecutor felületobjektum létrehozása Type casting segítségévelJavascriptExecutor js = (JavascriptExecutor) illesztőprogram;// A webhely elindítása.driver.get ("http://demo.guru99.com/V4/");// A webhely domainnevének lekérése. A Tostring () objektumot névre változtatja.String DomainName = js.executeScript ("return document.domain;"). ToString ();System.out.println ("A webhely domain neve =" + DomainNév);// A webhely URL-jének lekérése. A Tostring () objektumot névre változtatjaString url = js.executeScript ("return document.URL;"). ToString ();System.out.println ("A webhely URL-je =" + url);// A document.title módszer lekéri a webhely Cím nevét. A Tostring () objektumot névre változtatjaString TitleName = js.executeScript ("return document.title;"). ToString ();System.out.println ("Az oldal címe =" + Cím neve);// Navigáljon egy új oldalra, azaz hozzon létre hozzáférési oldalt. (indítson új URL-t)js.executeScript ("window.location = 'http://demo.guru99.com/'");}}
Kimenet: Ha a fenti kód sikeresen végrehajtásra kerül, akkor beolvassa a webhely részleteit, és az alábbiak szerint navigál egy másik oldalra.
[TestNG] Futás:C: \ Users \ gauravn \ AppData \ Local \ Temp \ testng-eclipse-467151014 \ testng-Customsuite.xmllog4j: FIGYELMEZTETÉS Nem található függelék a naplózóhoz (org.apache.http.client.protocol.RequestAddCookies).log4j: WARN Kérjük, inicializálja a log4j rendszert megfelelően.log4j: FIGYELMEZTETÉS További információkért lásd: http://logging.apache.org/log4j/1.2/faq.html#noconfig.A webhely domain neve = demo.guru99.comA webhely URL-je = http://demo.guru99.com/V4/Az oldal címe = Guru99 Bank kezdőlapMEGTETT: Bejelentkezés=================================================Alapértelmezett tesztFuttatott tesztek: 1, kudarcok: 0, kihagyások: 0=================================================
3) Példa: Görgessen lefelé a JavaScriptExecutor használatával.
Hajtsa végre az alábbi szelén szkriptet. Ebben a példában
- Indítsa el az oldalt
- Görgessen lefelé 600 képponttal
import org.openqa.selenium.JavascriptExecutor;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;JavaSE_Test nyilvános osztály@Tesztpublic void Bejelentkezés (){WebDriver illesztőprogram = new FirefoxDriver ();// A JavascriptExecutor felületobjektum létrehozása Type casting segítségévelJavascriptExecutor js = (JavascriptExecutor) illesztőprogram;// A webhely elindítása.driver.get ("http://moneyboats.com/");// Ablak maximalizálásadriver.manage (). window (). maximize ();// Függőleges görgetés lefelé 600 képponttaljs.executeScript ("window.scrollBy (0,600)");}}
Kimenet : A fenti kód végrehajtásakor 600 pixelel lefelé görget (lásd az alábbi képet).
Összegzés:
A JavaScriptExecutor akkor használható, ha a Selenium Webdriver valamilyen probléma miatt nem kattint egyetlen elemre sem.
- A JavaScriptExecutor két módszert biztosít az "executescript" és az "executeAsyncScript" kezelésére.
- A Selenium Webdriver segítségével futtatta a JavaScript-et.
- Illusztrálva, hogyan kell kattintani egy elemre a JavaScriptExecutor segítségével, ha a szelén valamilyen probléma miatt nem kattint az elemre.
- Generálta az 'Alert' ablakot a JavaScriptExecutor segítségével.
- Navigált a másik oldalra a JavaScriptExecutor használatával.
- Görgessen lefelé az ablakon a JavaScriptExecutor használatával.
- URL-t, címet és domainnevet beolvasott a JavaScriptExecutor segítségével.