JavaScriptExecutor v selenovom webovom ovládači s príkladom

Obsah:

Anonim

Čo je to JavaScriptExecutor?

JavaScriptExecutor je rozhranie, ktoré pomáha spúšťať JavaScript prostredníctvom selénového webového ovládača. JavaScriptExecutor poskytuje dve metódy „executescript“ a „executeAsyncScript“ na spustenie JavaScriptu vo vybranom okne alebo na aktuálnej stránke.

V tomto výučbe sa dozviete -

  • Čo je to JavaScriptExecutor?
  • Prečo potrebujeme JavaScriptExecutor?
  • Metódy vykonávateľa JavaScript
  • Príklad executeAsyncScript
    • Príklad 1: Spanie v testovanom prehliadači.
  • Príklad executeScript
    • 1) Príklad: Kliknutím na tlačidlo sa prihlásite a vygenerujete výstražné okno
    • 2) Príklad: Zachyťte dáta zoškrabania a prejdite na rôzne stránky
    • 3) Príklad: Prejdite nadol pomocou

Prečo potrebujeme JavaScriptExecutor?

V serveri Selenium Webdriver sa na identifikáciu a vykonávanie operácií na webovej stránke používajú lokátory ako XPath, CSS atď.

V prípade, že tieto lokátory nepracujú, môžete použiť JavaScriptExecutor. Môžete použiť JavaScriptExecutor na vykonanie požadovanej operácie s webovým prvkom.

Selén podporuje javaScriptExecutor. Nie je potrebný žiadny ďalší doplnok alebo doplnok. Musíte len importovať ( org.openqa.selenium.JavascriptExecutor ) do skriptu, aby ste mohli používať JavaScriptExecutor.

Metódy vykonávateľa JavaScript

  1. executeAsyncScript

Vďaka asynchrónnemu skriptu sa vaša stránka vykresľuje rýchlejšie. Namiesto toho, aby ste používateľov nútili čakať na stiahnutie skriptu pred vykreslením stránky. Táto funkcia vykoná asynchrónny kúsok kódu JavaScript v kontexte aktuálne vybratého rámca alebo okna v seléne. Takto vykonaný JS je jednovláknový s rôznymi funkciami spätného volania, ktoré bežia synchrónne.

  1. executeScript

Táto metóda vykonáva JavaScript v kontexte aktuálne vybratého rámca alebo okna v seléne. Skript použitý v tejto metóde beží v tele anonymnej funkcie (funkcia bez názvu). Môžeme k tomu predložiť aj zložité argumenty.

Skript môže vracať hodnoty. Vrátené dátové typy sú

  • Boolovský
  • Dlhé
  • String
  • Zoznam
  • WebElement.

Základná syntax pre JavascriptExecutor je uvedená nižšie:

Syntax:

JavascriptExecutor js = (JavascriptExecutor) ovládač;js.executeScript (skript, argumenty);
  • Skript - Toto je JavaScript, ktorý je potrebné vykonať.
  • Argumenty - sú to argumenty pre skript. Je to voliteľné.

Príklad executeAsyncScript

Používanie kódu executeAsyncScript pomáha zlepšovať výkonnosť vášho testu. Umožňuje skôr písanie testu ako pri bežnom kódovaní.

Funkcia execSync blokuje ďalšie akcie, ktoré vykonáva prehliadač selénu, ale funkcia execAsync akciu neblokuje. Po dokončení skriptu odošle spätné volanie na testovaciu sadu na strane servera. To znamená, že všetko vo vnútri skriptu bude vykonané prehliadačom, nie serverom.

Príklad 1: Spanie v testovanom prehliadači.

V tomto scenári použijeme na ukážku executeAsyncScript ukážkovú stránku „Guru99“. V tomto príklade budete

  • Spustite prehliadač.
  • Otvorte stránku „http://demo.guru99.com/V4/“.
  • Aplikácia počká 5 sekúnd na vykonanie ďalšej akcie.

Krok 1) Zachyťte čas začiatku pred čakaním na 5 sekúnd (5 000 milisekúnd) pomocou metódy executeAsyncScript ().

Krok 2) Potom pomocou executeAsyncScript () počkajte 5 sekúnd.

Krok 3) Potom získajte aktuálny čas.

Krok 4) Odčítanie (aktuálny čas - čas začiatku) = uplynutý čas.

Krok 5) Overte výstup, ktorý by mal zobrazovať viac ako 5 000 milisekúnd

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;verejná trieda JavaSE_Test {@Testpublic void Prihlásenie (){Ovládač WebDriver = nový FirefoxDriver ();// Vytvorenie objektu rozhrania JavascriptExecutor pomocou castingu typuJavascriptExecutor js = (JavascriptExecutor) ovládač;// Spustenie stránky.driver.get ("http://demo.guru99.com/V4/");// Maximalizovať oknodriver.manage (). window (). maximize ();// Nastavte časový limit skriptu na 20 sekúnddriver.manage (). timeouts (). setScriptTimeout (20, TimeUnit.SECONDS);// Deklarujte a nastavte čas začiatkulong start_time = System.currentTimeMillis ();// Zavolajte metódu executeAsyncScript () a počkajte 5 sekúndjs.executeAsyncScript ("window.setTimeout (argumenty [argumenty.length - 1], 5 000);");// Získajte rozdiel (currentTime - startTime) časov.System.out.println ("Uplynutý čas: + (System.currentTimeMillis () - start_time));}}

Výstup: Úspešne sa zobrazil uplynulý čas viac ako 5 sekúnd (5 000 milisekúnd), ako je uvedené nižšie:

[TestNG] Beží:C: \ Users \ gauravn \ AppData \ Local \ Temp \ testng-eclipse-387352559 \ testng-customsuite.xmllog4j: UPOZORNENIE Pre záznamník (org.apache.http.client.protocol.RequestAddCookies) nebolo možné nájsť žiadne dodatky.log4j: UPOZORNENIE Inicializujte systém log4j správne.log4j: POZOR Ďalšie informácie nájdete na stránke http://logging.apache.org/log4j/1.2/faq.html#noconfig.Uplynulý čas: 5022PASSED: Prihlásenie================================================Predvolený testPriebeh testov: 1, zlyhania: 0, preskoky: 0================================================

Príklad executeScript

Pre program executeScript uvidíme postupne tri rôzne príklady.

1) Príklad: Kliknutím na tlačidlo sa prihlásite a vygenerujete výstražné okno pomocou nástroja JavaScriptExecutor.

V tomto scenári použijeme na ilustráciu JavaScriptExecutor ukážkovú stránku „Guru99“. V tomto príklade

  • Spustite webový prehliadač
  • otvorte stránku "http://demo.guru99.com/V4/" a
  • prihlásiť sa pomocou prihlasovacích údajov
  • Zobraziť výstražné okno o úspešnom prihlásení.
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;verejná trieda JavaSE_Test {@Testpublic void Prihlásenie (){Ovládač WebDriver = nový FirefoxDriver ();// Vytvorenie objektu rozhrania JavascriptExecutor pomocou castingu typuJavascriptExecutor js = (JavascriptExecutor) ovládač;// Spustenie stránky.driver.get ("http://demo.guru99.com/V4/");Tlačidlo WebElement = driver.findElement (By.name ("btnLogin"));// Prihlásenie na Guru99driver.findElement (By.name ("uid")). sendKeys ("mngr34926");driver.findElement (By.name ("heslo")). sendKeys ("amUpenu");// Vykonať Kliknite na tlačidlo PRIHLÁSENIE pomocou JavascriptExecutorjs.executeScript ("argumenty [0] .click ();", tlačidlo);// Generovanie výstražného okna pomocou JavascriptExecutor. Zobraziť výstražnú správujs.executeScript ("upozornenie ('Vitajte v Guru99');");}}

Výstup: Po úspešnom vykonaní kódu. Budete pozorovať

  • Úspešne kliknite na prihlasovacie tlačidlo a
  • Zobrazí sa výstražné okno (pozri obrázok nižšie).

2) Príklad: Zachyťte údaje o škrebe a pomocou nástroja JavaScriptExecutor prejdite na rôzne stránky.

Vykonajte nižšie uvedený selénový skript. V tomto príklade

  • Spustite web
  • Načítajte podrobnosti o webe, napríklad adresu URL webu, názov titulu a názov domény webu.
  • Potom prejdite na inú stránku.
import org.openqa.selenium.JavascriptExecutor;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;verejná trieda JavaSE_Test {@Testpublic void Prihlásenie (){Ovládač WebDriver = nový FirefoxDriver ();// Vytvorenie objektu rozhrania JavascriptExecutor pomocou castingu typuJavascriptExecutor js = (JavascriptExecutor) ovládač;// Spustenie stránky.driver.get ("http://demo.guru99.com/V4/");// Načítanie názvu domény webu. Tostring () zmení objekt na názov.Reťazec DomainName = js.executeScript ("návrat document.domain;"). ToString ();System.out.println ("Názov domény webu =" + Názov domény);// Načítanie adresy URL stránky. Tostring () zmení objekt na názovReťazec url = js.executeScript ("návratový dokument.URL;"). ToString ();System.out.println ("URL stránky =" + url);// Metóda document.title načíta názov názvu stránky. Tostring () zmení objekt na názovReťazec TitleName = js.executeScript ("návrat document.title;"). ToString ();System.out.println ("Názov stránky =" + NázovNázoru);// Prejsť na novú stránku, tj. Vygenerovať prístupovú stránku. (spustiť novú adresu URL)js.executeScript ("window.location = 'http://demo.guru99.com/'"));}}

Výstup: Po úspešnom vykonaní vyššie uvedeného kódu sa načítajú podrobnosti o webe a prejde na inú stránku, ako je uvedené nižšie.

[TestNG] Beží:C: \ Users \ gauravn \ AppData \ Local \ Temp \ testng-eclipse-467151014 \ testng-customsuite.xmllog4j: UPOZORNENIE Pre záznamník (org.apache.http.client.protocol.RequestAddCookies) nebolo možné nájsť žiadne dodatky.log4j: UPOZORNENIE Inicializujte systém log4j správne.log4j: POZOR Ďalšie informácie nájdete na stránke http://logging.apache.org/log4j/1.2/faq.html#noconfig.Názov domény stránky = demo.guru99.comURL stránky = http://demo.guru99.com/V4/Názov stránky = Domovská stránka banky Guru99 BankPASSED: Prihlásenie================================================Predvolený testPriebeh testov: 1, zlyhania: 0, preskoky: 0================================================ 

3) Príklad: Prejdite nadol pomocou nástroja JavaScriptExecutor.

Vykonajte nižšie uvedený selénový skript. V tomto príklade

  • Spustite web
  • Posun nadol o 600 pixelov
import org.openqa.selenium.JavascriptExecutor;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;verejná trieda JavaSE_Test {@Testpublic void Prihlásenie (){Ovládač WebDriver = nový FirefoxDriver ();// Vytvorenie objektu rozhrania JavascriptExecutor pomocou castingu typuJavascriptExecutor js = (JavascriptExecutor) ovládač;// Spustenie stránky.driver.get ("http://moneyboats.com/");// Maximalizovať oknodriver.manage (). window (). maximize ();// Vertikálne rolovanie nadol o 600 pixelovjs.executeScript ("window.scrollBy (0,600)");}}

Výstup : Po vykonaní vyššie uvedeného kódu sa posúva nadol o 600 pixelov (pozri obrázok nižšie).

Zhrnutie:

JavaScriptExecutor sa používa, keď webový server Selenium neklikne na akýkoľvek prvok z dôvodu nejakého problému.

  • JavaScriptExecutor poskytuje na spracovanie dve metódy „executescript“ a „executeAsyncScript“.
  • Spustil JavaScript pomocou selenového webdriveru.
  • Ilustrované, ako kliknúť na prvok pomocou nástroja JavaScriptExecutor, ak selén nedokáže kliknúť na prvok z dôvodu nejakého problému.
  • Vygenerované okno „Varovanie“ pomocou nástroja JavaScriptExecutor.
  • Na inú stránku ste prešli pomocou nástroja JavaScriptExecutor.
  • Posunul sa nadol oknom pomocou nástroja JavaScriptExecutor.
  • Načítaná adresa URL, názov a názov domény pomocou nástroja JavaScriptExecutor.