In this tutorial, you will learn –
What is JavaScriptExecutor? Why do we need JavaScriptExecutor? JavaScriptExecutor Methods Example of executeAsyncScript
Example 1: Performing a sleep in the browser under test.
Example of executeScript
- Example: Click a button to login and generate Alert window
- Example: Capture Scrape Data and Navigate to different pages
- Example: Scroll Downusing
Why do we need JavaScriptExecutor?
In Selenium Webdriver, locators like XPath, CSS, etc. are used to identify and perform operations on a web page. In case, these locators do not work you can use JavaScriptExecutor. You can use JavaScriptExecutor to perform an desired operation on a web element. Selenium supports javaScriptExecutor. There is no need for an extra plugin or add-on. You just need to import (org.openqa.selenium.JavascriptExecutor) in the script as to use JavaScriptExecutor.
JavaScriptExecutor Methods
executeAsyncScript
With Asynchronous script, your page renders more quickly. Instead of forcing users to wait for a script to download before the page renders. This function will execute an asynchronous piece of JavaScript in the context of the currently selected frame or window in Selenium. The JS so executed is single-threaded with a various callback function which runs synchronously.
executeScript
This method executes JavaScript in the context of the currently selected frame or window in Selenium. The script used in this method runs in the body of an anonymous function (a function without a name). We can also pass complicated arguments to it. The script can return values. Data types returned are
Boolean Long String List WebElement.
The basic syntax for JavascriptExecutor is given below: Syntax:
Script – This is the JavaScript that needs to execute. Arguments – It is the arguments to the script. It’s optional.
Example of executeAsyncScript
Using the executeAsyncScript, helps to improve the performance of your test. It allows writing test more like a normal coding. The execSync blocks further actions being performed by the Selenium browser but execAsync does not block action. It will send a callback to the server-side Testing suite once the script is done. It means everything inside the script will be executed by the browser and not the server.
Example 1: Performing a sleep in the browser under test.
In this scenario, we will use “Guru99” demo site to illustrate executeAsyncScript. In this example, you will
Launch the browser. Open site http://demo.guru99.com/V4/. Application waits for 5 sec to perform a further action.
Step 1) Capture the start time before waiting for 5 seconds ( 5000 milliseconds) by using executeAsyncScript() method. Step 2) Then, use executeAsyncScript() to wait 5 seconds. Step 3) Then, get the current time. Step 4) Subtract (current time – start time) = passed time. Step 5) Verify the output it should display more than 5000 milliseconds Output: Successfully displayed the passed time more than 5 seconds(5000 miliseconds) as shown below:
Example of executeScript
For executeScript, we will see three different example one by one.
1) Example: Click a button to login and generate Alert window using JavaScriptExecutor.
In this scenario, we will use “Guru99” demo site to illustrate JavaScriptExecutor. In this example,
Launch the web browser open the site http://demo.guru99.com/V4/ and login with credentials
Display alert window on successful login.
Successful click on login button and the Alert window will be displayed (see image below).
2) Example: Capture Scrape Data and Navigate to different pages using JavaScriptExecutor.
Execute the below selenium script. In this example,
Launch the site Fetch the details of the site like URL of the site, title name and domain name of the site. Then navigate to a different page.
Output: When above code is executed successfully, it will fetch the details of the site and navigate to different page as shown below.
3) Example: Scroll Downusing JavaScriptExecutor.
Execute the below selenium script. In this example,
Launch the site Scroll down by 600 pixel
Output: When above code is executed, it will scroll down by 600 pixels (see image below).
Summary: JavaScriptExecutor is used when Selenium Webdriver fails to click on any element due to some issue.
JavaScriptExecutor provides two methods “executescript” & “executeAsyncScript” to handle. Executed the JavaScript using Selenium Webdriver. Illustrated how to click on an element through JavaScriptExecutor, if selenium fails to click on element due to some issue. Generated the ‘Alert’ window using JavaScriptExecutor. Navigated to the different page using JavaScriptExecutor. Scrolled down the window using JavaScriptExecutor. Fetched URL, title, and domain name using JavaScriptExecutor.