Kas ir JavaScriptExecutor?
JavaScriptExecutor ir saskarne, kas palīdz izpildīt JavaScript, izmantojot Selenium Webdriver. JavaScriptExecutor nodrošina divas metodes "executescript" un "executeAsyncScript", lai palaistu javascript atlasītajā logā vai pašreizējā lapā.
Šajā apmācībā jūs uzzināsiet -
- Kas ir JavaScriptExecutor?
- Kāpēc mums ir nepieciešams JavaScriptExecutor?
- JavaScriptExecutor metodes
- ExecuteAsyncScript piemērs
- 1. piemērs: miega režīma veikšana pārbaudāmajā pārlūkprogrammā.
- ExecuteScript piemērs
- 1) Piemērs: Noklikšķiniet uz pogas, lai pieteiktos un ģenerētu brīdinājuma logu
- 2) Piemērs: uztveriet nokasāmos datus un dodieties uz dažādām lapām
- 3) Piemērs: ritiniet uz leju, izmantojot
Kāpēc mums ir nepieciešams JavaScriptExecutor?
Programmā Selenium Webdriver lokatori, piemēram, XPath, CSS utt., Tiek izmantoti, lai identificētu un veiktu darbības tīmekļa lapā.
Gadījumā, ja šie lokatori nedarbojas, varat izmantot JavaScriptExecutor. Varat izmantot JavaScriptExecutor, lai Web elementā veiktu vēlamo darbību.
Selēns atbalsta javaScriptExecutor. Nav nepieciešams papildu spraudnis vai papildinājums. Jums vienkārši jāimportē ( org.openqa.selenium.JavascriptExecutor ) skriptā, lai izmantotu JavaScriptExecutor.
JavaScriptExecutor metodes
- executeAsyncScript
Izmantojot asinhrono skriptu, jūsu lapa tiek atveidota ātrāk. Tā vietā, lai piespiestu lietotājus gaidīt skripta lejupielādi pirms lapas renderēšanas. Šī funkcija izpildīs asinhrono JavaScript fragmentu pašreiz atlasītā rāmja vai loga kontekstā Selenium. Šādi izpildītais JS ir ar vienu pavedienu ar dažādu atzvanīšanas funkciju, kas darbojas sinhroni.
- executeScript
Šī metode izpilda JavaScript kontekstā ar pašlaik atlasīto rāmi vai logu Selenium. Šajā metodē izmantotais skripts darbojas anonīmas funkcijas pamattekstā (funkcija bez nosaukuma). Mēs tam varam nodot arī sarežģītus argumentus.
Skripts var atgriezt vērtības. Atgrieztie datu tipi ir
- Būla
- Garš
- Stīga
- Saraksts
- WebElement.
JavascriptExecutor pamata sintakse ir sniegta zemāk:
Sintakse:
JavascriptExecutor js = (JavascriptExecutor) draiveris;js.executeScript (skripts, argumenti);
- Skripts - tas ir JavaScript, kas jāizpilda.
- Argumenti - tie ir skripta argumenti. Tas nav obligāts.
ExecuteAsyncScript piemērs
ExecuteAsyncScript izmantošana palīdz uzlabot testa veiktspēju. Tas ļauj rakstīšanas pārbaudi vairāk līdzināties parastai kodēšanai.
ExecSync bloķē turpmākās darbības, kuras veic pārlūks Selenium, bet execAsync nebloķē darbību. Pēc skripta izveides tas nosūtīs atzvanīšanu uz servera puses testēšanas komplektu. Tas nozīmē, ka visu skripta iekšpusē izpildīs pārlūks, nevis serveris.
1. piemērs: miega režīma veikšana pārbaudāmajā pārlūkprogrammā.
Šajā scenārijā mēs izmantosim "Guru99" demonstrācijas vietni, lai ilustrētu executeAsyncScript. Šajā piemērā jūs to darīsit
- Palaidiet pārlūku.
- Atveriet vietni "http://demo.guru99.com/V4/".
- Lietojumprogramma gaida 5 sekundes, lai veiktu turpmāku darbību.
1. darbība. Uzņemiet sākuma laiku, pirms gaidāt 5 sekundes (5000 milisekundes), izmantojot metodi executeAsyncScript ().
2. solis. Pēc tam izmantojiet executeAsyncScript (), lai pagaidītu 5 sekundes.
3. solis. Pēc tam iegūstiet pašreizējo laiku.
4. solis) Atņemt (pašreizējais laiks - sākuma laiks) = pagājis laiks.
5. solis. Pārbaudiet izvadi, kurā tai jāparāda vairāk nekā 5000 milisekundes
importēt java.util.concurrent.TimeUnit;importēt org.openqa.selenium.JavascriptExecutor;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.firefox.FirefoxDriver;importēt org.testng.annotations.Test;publiskā klase JavaSE_Test {@Pārbaudepublic void Pieteikšanās (){WebDriver draiveris = jauns FirefoxDriver ();// Interfeisa objekta JavascriptExecutor izveide pēc tipa liešanasJavascriptExecutor js = (JavascriptExecutor) draiveris;// Vietnes palaišana.driver.get ("http://demo.guru99.com/V4/");// Palielināt logudraiveris.pārvaldīt (). logs (). maksimizēt ();// Iestatiet skripta taimautu uz 20 sekundēmdraiveris.manage (). taimauts (). setScriptTimeout (20, TimeUnit.SECONDS);// Paziņojiet un iestatiet sākuma laikulong start_time = System.currentTimeMillis ();// Zvana metode executeAsyncScript (), lai gaidītu 5 sekundesjs.executeAsyncScript ("window.setTimeout (argumenti [arguments.length - 1], 5000);");// Iegūstiet starpību (currentTime - startTime) reizes.System.out.println ("Nokārtotais laiks: + (System.currentTimeMillis () - start_time));}}
Izeja: veiksmīgi parādīts pagājušais laiks vairāk nekā 5 sekundes (5000 milisekundes), kā parādīts zemāk:
[TestNG] Skriešana:C: \ Users \ gauravn \ AppData \ Local \ Temp \ testng-eclipse-387352559 \ testng-Customsuite.xmllog4j: BRĪDINĀJUMS Reģistrētājam nevarēja atrast pielikumus (org.apache.http.client.protocol.RequestAddCookies).log4j: WARN Lūdzu, pareizi inicializējiet log4j sistēmu.log4j: BRĪDINĀJUMS Papildinformāciju skatiet vietnē http://logging.apache.org/log4j/1.2/faq.html#noconfig.Pagājis laiks: 5022PĀRTRAUKTS: Piesakieties=================================================Noklusējuma pārbaudeTesti veikti: 1, Neveiksmes: 0, Izlaišana: 0=================================================
ExecuteScript piemērs
ExecuteScript mēs redzēsim trīs dažādus piemērus pa vienam.
1) Piemērs: Noklikšķiniet uz pogas, lai pieteiktos un ģenerētu brīdinājuma logu, izmantojot JavaScriptExecutor.
Šajā scenārijā mēs izmantosim "Guru99" demonstrācijas vietni, lai ilustrētu JavaScriptExecutor. Šajā piemērā
- Palaidiet tīmekļa pārlūku
- atveriet vietni "http://demo.guru99.com/V4/" un
- pieteikšanās ar akreditācijas datiem
- Parādīt brīdinājuma logu, lai veiksmīgi pieteiktos.
importēt org.openqa.selenium.By;importēt org.openqa.selenium.JavascriptExecutor;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.WebElement;importēt org.openqa.selenium.firefox.FirefoxDriver;importēt org.testng.annotations.Test;publiskā klase JavaSE_Test {@Pārbaudepublic void Pieteikšanās (){WebDriver draiveris = jauns FirefoxDriver ();// Interfeisa objekta JavascriptExecutor izveide pēc tipa liešanasJavascriptExecutor js = (JavascriptExecutor) draiveris;// Vietnes palaišana.driver.get ("http://demo.guru99.com/V4/");WebElement poga = driver.findElement (By.name ("btnLogin"));// Piesakieties Guru99driver.findElement (By.name ("uid")). sendKeys ("mngr34926");driver.findElement (By.name ("parole")). sendKeys ("amUpenu");// Veiciet JavascriptExecutor, noklikšķiniet uz pogas LOGINjs.executeScript ("argumenti [0] .click ();", poga);// Lai ģenerētu brīdinājuma logu, izmantojot JavascriptExecutor. Parādīt brīdinājuma ziņojumujs.executeScript ("alert ('Laipni lūdzam Guru99');");}}
Izeja: Kad kods ir veiksmīgi izpildīts. Jūs ievērosiet
- Veiksmīgi noklikšķiniet uz pieteikšanās pogas un
- Tiks parādīts brīdinājuma logs (skatiet attēlu zemāk).
2) Piemērs: uztveriet nokasāmos datus un dodieties uz dažādām lapām, izmantojot JavaScriptExecutor.
Izpildiet zemāk esošo selēna skriptu. Šajā piemērā
- Palaidiet vietni
- Iegūstiet informāciju par vietni, piemēram, vietnes URL, nosaukuma nosaukumu un vietnes domēna nosaukumu.
- Pēc tam pārejiet uz citu lapu.
importēt org.openqa.selenium.JavascriptExecutor;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.firefox.FirefoxDriver;importēt org.testng.annotations.Test;publiskā klase JavaSE_Test {@Pārbaudepublic void Pieteikšanās (){WebDriver draiveris = jauns FirefoxDriver ();// Interfeisa objekta JavascriptExecutor izveide pēc tipa liešanasJavascriptExecutor js = (JavascriptExecutor) draiveris;// Vietnes palaišana.driver.get ("http://demo.guru99.com/V4/");// Vietnes domēna vārda iegūšana. Tostring () mainīt objektu uz nosaukumu.String DomainName = js.executeScript ("return document.domain;"). ToString ();System.out.println ("Vietnes domēna nosaukums =" + DomainName);// Vietnes URL ielāde. Tostring () mainīt objektu uz nosaukumuString url = js.executeScript ("return document.URL;"). ToString ();System.out.println ("Vietnes URL =" + url);// Metode document.title ielādē vietnes nosaukuma nosaukumu. Tostring () mainīt objektu uz nosaukumuString TitleName = js.executeScript ("return document.title;"). ToString ();System.out.println ("Lapas nosaukums =" + Nosaukuma nosaukums);// Pārejiet uz jaunu lapu, ti, lai ģenerētu piekļuves lapu. (palaist jaunu URL)js.executeScript ("window.location = 'http://demo.guru99.com/'");}}
Izeja: Kad iepriekšējais kods ir veiksmīgi izpildīts, tas iegūs vietnes informāciju un virzīsies uz citu lapu, kā parādīts zemāk.
[TestNG] Skriešana:C: \ Users \ gauravn \ AppData \ Local \ Temp \ testng-eclipse-467151014 \ testng-Customsuite.xmllog4j: BRĪDINĀJUMS Reģistrētājam nevarēja atrast pielikumus (org.apache.http.client.protocol.RequestAddCookies).log4j: WARN Lūdzu, pareizi inicializējiet log4j sistēmu.log4j: BRĪDINĀJUMS Papildinformāciju skatiet vietnē http://logging.apache.org/log4j/1.2/faq.html#noconfig.Vietnes domēna nosaukums = demo.guru99.comVietnes URL = http://demo.guru99.com/V4/Lapas nosaukums = Bankas Guru99 mājas lapaPĀRTRAUKTS: Piesakieties=================================================Noklusējuma pārbaudeTesti veikti: 1, Neveiksmes: 0, Izlaišana: 0=================================================
3) Piemērs: ritiniet uz leju, izmantojot JavaScriptExecutor.
Izpildiet zemāk esošo selēna skriptu. Šajā piemērā
- Palaidiet vietni
- Ritiniet uz leju par 600 pikseļiem
importēt org.openqa.selenium.JavascriptExecutor;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.firefox.FirefoxDriver;importēt org.testng.annotations.Test;publiskā klase JavaSE_Test {@Pārbaudepublic void Pieteikšanās (){WebDriver draiveris = jauns FirefoxDriver ();// Interfeisa objekta JavascriptExecutor izveide pēc tipa liešanasJavascriptExecutor js = (JavascriptExecutor) draiveris;// Vietnes palaišana.draiveris.get ("http://moneyboats.com/");// Palielināt logudraiveris.pārvaldīt (). logs (). maksimizēt ();// Vertikāli ritiniet uz leju par 600 pikseļiemjs.executeScript ("window.scrollBy (0,600)");}}
Izeja : izpildot iepriekš minēto kodu, tas ritinās uz leju par 600 pikseļiem (skat. Attēlu zemāk).
Kopsavilkums:
JavaScriptExecutor tiek izmantots, ja Selenium Webdriver neizdodas noklikšķināt uz jebkura elementa kādas problēmas dēļ.
- JavaScriptExecutor nodrošina divas apstrādes metodes "executescript" un "executeAsyncScript".
- Izpildīja JavaScript, izmantojot Selenium Webdriver.
- Ilustrēts, kā noklikšķināt uz elementa, izmantojot JavaScriptExecutor, ja selēns kāda jautājuma dēļ nespēj noklikšķināt uz elementa.
- Izmantojot JavaScriptExecutor, tika ģenerēts logs “Brīdinājums”.
- Pārejiet uz citu lapu, izmantojot JavaScriptExecutor.
- Ritiniet uz leju logu, izmantojot JavaScriptExecutor.
- Ielādēts URL, nosaukums un domēna nosaukums, izmantojot JavaScriptExecutor.