JavaScriptExecutor în Selenium WebDriver cu exemplu

Cuprins:

Anonim

Ce este JavaScriptExecutor?

JavaScriptExecutor este o interfață care ajută la executarea JavaScript prin Selenium Webdriver. JavaScriptExecutor oferă două metode „executescript” și „executeAsyncScript” pentru a rula javascript în fereastra selectată sau pagina curentă.

În acest tutorial, veți învăța -

  • Ce este JavaScriptExecutor?
  • De ce avem nevoie de JavaScriptExecutor?
  • Metode JavaScriptExecutor
  • Exemplu de executeAsyncScript
    • Exemplul 1: Efectuarea unei repausuri în browserul testat
  • Exemplu de executeScript
    • 1) Exemplu: Faceți clic pe un buton pentru a vă conecta și a genera fereastra Alertă
    • 2) Exemplu: Capturați date de răzuire și navigați la diferite pagini
    • 3) Exemplu: Derulați în jos folosind

De ce avem nevoie de JavaScriptExecutor?

În Selenium Webdriver, localizatori precum XPath, CSS etc. sunt folosiți pentru a identifica și a efectua operațiuni pe o pagină web.

În cazul în care acești localizatori nu funcționează, puteți utiliza JavaScriptExecutor. Puteți utiliza JavaScriptExecutor pentru a efectua operația dorită pe un element web.

Selenium acceptă javaScriptExecutor. Nu este nevoie de un plugin sau un supliment suplimentar. Trebuie doar să importați ( org.openqa.selenium.JavascriptExecutor ) în script pentru a utiliza JavaScriptExecutor.

Metode JavaScriptExecutor

  1. executeAsyncScript

Cu scriptul asincron, pagina dvs. se redă mai rapid. În loc să forțeze utilizatorii să aștepte descărcarea unui script înainte ca pagina să fie redată. Această funcție va executa o bucată asincronă de JavaScript în contextul cadrului sau ferestrei selectate în prezent în Selenium. JS astfel executat este cu un singur thread cu o funcție de apelare diferită care rulează sincron.

  1. executeScript

Această metodă execută JavaScript în contextul cadrului sau ferestrei selectate în prezent în Selenium. Scriptul utilizat în această metodă rulează în corpul unei funcții anonime (o funcție fără nume). De asemenea, îi putem transmite argumente complicate.

Scriptul poate returna valori. Tipurile de date returnate sunt

  • Boolean
  • Lung
  • Şir
  • Listă
  • WebElement.

Sintaxa de bază pentru JavascriptExecutor este dată mai jos:

Sintaxă:

JavascriptExecutor js = (JavascriptExecutor) driver;js.executeScript (Script, Argumente);
  • Script - Acesta este JavaScript care trebuie executat.
  • Argumente - Sunt argumentele scriptului. Este opțional.

Exemplu de executeAsyncScript

Utilizarea executeAsyncScript vă ajută să îmbunătățiți performanța testului. Permite testarea scrisului mai mult ca o codare normală.

ExecSync blochează acțiunile suplimentare efectuate de browserul Selenium, dar execAsync nu blochează acțiunea. Acesta va trimite un apel invers către suita de testare pe partea de server, după finalizarea scriptului. Înseamnă că totul din script va fi executat de browser și nu de server.

Exemplul 1: Efectuarea unei repausuri în browserul testat

În acest scenariu, vom folosi site-ul demonstrativ „Guru99” pentru a ilustra executeAsyncScript. În acest exemplu, veți face

  • Lansați browserul.
  • Deschideți site-ul „http://demo.guru99.com/V4/”.
  • Aplicația așteaptă 5 secunde pentru a efectua o acțiune suplimentară.

Pasul 1) Capturați ora de început înainte de a aștepta 5 secunde (5000 milisecunde) utilizând metoda executeAsyncScript ().

Pasul 2) Apoi, utilizați executeAsyncScript () pentru a aștepta 5 secunde.

Pasul 3) Apoi, obțineți ora curentă.

Pasul 4) Scăderea (ora curentă - ora de început) = timpul trecut.

Pasul 5) Verificați ieșirea pe care ar trebui să o afișeze mai mult de 5000 de milisecunde

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;clasă publică JavaSE_Test {@Testpublic void Autentificare (){Driver WebDriver = nou FirefoxDriver ();// Crearea obiectului de interfață JavascriptExecutor prin tipare castingJavascriptExecutor js = (JavascriptExecutor) driver;// Lansarea site-ului.driver.get ("http://demo.guru99.com/V4/");// Maximizați fereastradriver.manage (). window (). maximize ();// Setați expirarea scriptului la 20 de secundedriver.manage (). timeouts (). setScriptTimeout (20, TimeUnit.SECONDS);// Declarați și setați ora de începerelong start_time = System.currentTimeMillis ();// Apelați metoda executeAsyncScript () pentru a aștepta 5 secundejs.executeAsyncScript ("window.setTimeout (argumente [arguments.length - 1], 5000);");// Obțineți diferența de timp (currentTime - startTime).System.out.println ("Timpul trecut: + (System.currentTimeMillis () - start_time));}}

Ieșire: timpul trecut a fost afișat cu succes mai mult de 5 secunde (5000 milisecunde) așa cum se arată mai jos:

[TestNG] Rularea:C: \ Users \ gauravn \ AppData \ Local \ Temp \ testng-eclipse-387352559 \ testng-customsuite.xmllog4j: AVERTISMENT Nu s-au găsit anexe pentru logger (org.apache.http.client.protocol.RequestAddCookies).log4j: AVERTISMENT Vă rugăm să inițializați sistemul log4j corect.log4j: AVERTISMENT Consultați http://logging.apache.org/log4j/1.2/faq.html#noconfig pentru mai multe informații.Timpul trecut: 5022TRECUT: Autentificare================================================Test implicitTeste efectuate: 1, Eșecuri: 0, Salturi: 0================================================

Exemplu de executeScript

Pentru executeScript, vom vedea trei exemple diferite unul câte unul.

1) Exemplu: Faceți clic pe un buton pentru a vă autentifica și a genera fereastra de alertă utilizând JavaScriptExecutor.

În acest scenariu, vom folosi site-ul demonstrativ „Guru99” pentru a ilustra JavaScriptExecutor. În acest exemplu,

  • Lansați browserul web
  • deschideți site-ul „http://demo.guru99.com/V4/” și
  • autentificați-vă cu acreditări
  • Afișați fereastra de alertă la conectarea cu succes.
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;clasă publică JavaSE_Test {@Testpublic void Autentificare (){Driver WebDriver = nou FirefoxDriver ();// Crearea obiectului de interfață JavascriptExecutor prin tipare castingJavascriptExecutor js = (JavascriptExecutor) driver;// Lansarea site-ului.driver.get ("http://demo.guru99.com/V4/");Butonul WebElement = driver.findElement (By.name ("btnLogin"));// Conectați-vă la Guru99driver.findElement (By.name ("uid")). sendKeys ("mngr34926");driver.findElement (By.name ("parolă")). sendKeys ("amUpenu");// Efectuați Faceți clic pe butonul LOGIN folosind JavascriptExecutorjs.executeScript ("argumente [0] .click ();", buton);// Pentru a genera fereastra Alert folosind JavascriptExecutor. Afișați mesajul de alertăjs.executeScript ("alert ('Bun venit la Guru99');");}}

Ieșire: Când codul este executat cu succes. Vei observa

  • Faceți clic pe butonul de conectare și pe
  • Va fi afișată fereastra de alertă (vezi imaginea de mai jos).

2) Exemplu: Capturați date de răzuire și navigați la diferite pagini folosind JavaScriptExecutor.

Executați scriptul de seleniu de mai jos. În acest exemplu,

  • Lansați site-ul
  • Obțineți detaliile site-ului, cum ar fi adresa URL a site-ului, numele titlului și numele domeniului site-ului.
  • Apoi navigați la o altă pagină.
import org.openqa.selenium.JavascriptExecutor;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;clasă publică JavaSE_Test {@Testpublic void Autentificare (){Driver WebDriver = nou FirefoxDriver ();// Crearea obiectului de interfață JavascriptExecutor prin tipare castingJavascriptExecutor js = (JavascriptExecutor) driver;// Lansarea site-ului.driver.get ("http://demo.guru99.com/V4/");// Preluarea numelui de domeniu al site-ului. Tostring () schimbă obiectul în nume.String DomainName = js.executeScript ("return document.domain;"). ToString ();System.out.println ("Numele de domeniu al site-ului =" + DomainName);// Preluarea adresei URL a site-ului. Tostring () schimbă obiectul în numeString url = js.executeScript ("return document.URL;"). ToString ();System.out.println ("URL-ul site-ului =" + url);// Metoda document.title preluează numele titlului site-ului. Tostring () schimbă obiectul în numeString TitleName = js.executeScript ("return document.title;"). ToString ();System.out.println ("Titlul paginii =" + TitleName);// Navigați la pagina nouă, adică pentru a genera pagina de acces. (lansează o adresă URL nouă)js.executeScript ("window.location = 'http://demo.guru99.com/'");}}

Ieșire: când codul de mai sus este executat cu succes, acesta va prelua detaliile site-ului și va naviga la o pagină diferită, așa cum se arată mai jos.

[TestNG] Rularea:C: \ Users \ gauravn \ AppData \ Local \ Temp \ testng-eclipse-467151014 \ testng-customsuite.xmllog4j: AVERTISMENT Nu s-au găsit anexe pentru logger (org.apache.http.client.protocol.RequestAddCookies).log4j: AVERTISMENT Vă rugăm să inițializați sistemul log4j corect.log4j: AVERTISMENT Consultați http://logging.apache.org/log4j/1.2/faq.html#noconfig pentru mai multe informații.Numele de domeniu al site-ului = demo.guru99.comAdresa URL a site-ului = http://demo.guru99.com/V4/Titlul paginii = Pagina principală a Guru99 BankTRECUT: Autentificare================================================Test implicitTeste efectuate: 1, Eșecuri: 0, Salturi: 0================================================ 

3) Exemplu: Derulați în jos folosind JavaScriptExecutor.

Executați scriptul de seleniu de mai jos. În acest exemplu,

  • Lansați site-ul
  • Derulați în jos cu 600 de pixeli
import org.openqa.selenium.JavascriptExecutor;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;clasă publică JavaSE_Test {@Testpublic void Autentificare (){Driver WebDriver = nou FirefoxDriver ();// Crearea obiectului de interfață JavascriptExecutor prin tipare castingJavascriptExecutor js = (JavascriptExecutor) driver;// Lansarea site-ului.driver.get ("http://moneyboats.com/");// Maximizați fereastradriver.manage (). window (). maximize ();// Derulare verticală în jos cu 600 de pixelijs.executeScript ("window.scrollBy (0,600)");}}

Ieșire : Când codul de mai sus este executat, acesta va derula cu 600 de pixeli în jos (vezi imaginea de mai jos).

Rezumat:

JavaScriptExecutor este utilizat atunci când Selenium Webdriver nu reușește să facă clic pe niciun element din cauza unei probleme.

  • JavaScriptExecutor oferă două metode „executescript” și „executeAsyncScript” de gestionat.
  • Executarea JavaScript-ului folosind Selenium Webdriver.
  • Ilustrat cum să faceți clic pe un element prin JavaScriptExecutor, dacă seleniul nu reușește să facă clic pe element din cauza unei probleme.
  • A generat fereastra „Alertă” utilizând JavaScriptExecutor.
  • Navigat la diferite pagini folosind JavaScriptExecutor.
  • Ați derulat fereastra în jos folosind JavaScriptExecutor.
  • Adus adresa URL, titlul și numele domeniului folosind JavaScriptExecutor.