- Selenium Tutorial
- Selenium - Home
- Selenium - Overview
- Selenium - Components
- Selenium - Automation Testing
- Selenium - Environment Setup
- Selenium - Remote Control
- Selenium IDE Tutorial
- Selenium - IDE Introduction
- Selenium - Features
- Selenium - Limitations
- Selenium - Installation
- Selenium - Creating Tests
- Selenium - Creating Script
- Selenium - Control Flow
- Selenium - Store Variables
- Selenium - Alerts & Popups
- Selenium - Selenese Commands
- Selenium - Actions Commands
- Selenium - Accessors Commands
- Selenium - Assertions Commands
- Selenium - Assert/Verify Methods
- Selenium - Locating Strategies
- Selenium - Script Debugging
- Selenium - Verification Points
- Selenium - Pattern Matching
- Selenium - JSON Data File
- Selenium - Browser Execution
- Selenium - User Extensions
- Selenium - Code Export
- Selenium - JavaScript Functions
- Selenium - Plugins
- Selenium WebDriver Tutorial
- Selenium - Introduction
- Selenium WebDriver vs RC
- Selenium - Installation
- Selenium - First Test Script
- Selenium - Driver Sessions
- Selenium - Browser Options
- Selenium - Chrome Options
- Selenium - Edge Options
- Selenium - Firefox Options
- Selenium - Safari Options
- Selenium Web Elements
- Selenium - File Upload
- Selenium - Locator Strategies
- Selenium - Relative Locators
- Selenium - Finders
- Selenium - Find All Links
- Selenium - User Interactions
- Selenium - WebElement Commands
- Selenium - Browser Interactions
- Selenium - Browser Commands
- Selenium - Browser Navigation
- Selenium - Alerts & Popups
- Selenium - Handling Forms
- Selenium - Windows and Tabs
- Selenium - Handling Links
- Selenium - Input Boxes
- Selenium - Radio Button
- Selenium - Checkboxes
- Selenium - Dropdown Box
- Selenium - Handling IFrames
- Selenium - Handling Cookies
- Selenium - Date Time Picker
- Selenium - Dynamic Web Tables
- Selenium - Actions Class
- Selenium - Action Class
- Selenium - Keyboard Events
- Selenium - Key Up/Down
- Selenium - Copy and Paste
- Selenium - Handle Special Keys
- Selenium - Mouse Events
- Selenium - Drag and Drop
- Selenium - Scroll Operations
- Selenium - Waiting Strategies
- Selenium - Explicit/Implicit Wait
- Selenium - Support Features
- Selenium - Multi Select
- Selenium - Wait Support
- Selenium - Select Support
- Selenium - Color Support
- Selenium - Errors & Logging
- Selenium - Exception Handling
- Selenium - Miscellaneous
- Selenium - Handling Ajax Calls
- Selenium - JSON Data File
- Selenium - CSV Data File
- Selenium - Excel Data File
- Selenium - Cross Browser Testing
- Selenium - Multi Browser Testing
- Selenium - Multi Windows Testing
- Selenium - JavaScript Executor
- Selenium - Headless Execution
- Selenium - Capture Screenshots
- Selenium - Capture Videos
- Selenium - Page Object Model
- Selenium - Page Factory
- Selenium - Record & Playback
- Selenium - Frameworks
- Selenium - Browsing Context
- Selenium Grid Tutorial
- Selenium - Overview
- Selenium - Architecture
- Selenium - Components
- Selenium - Configuration
- Selenium - Create Test Script
- Selenium - Test Execution
- Selenium - Endpoints
- Selenium - Customizing a Node
- Selenium Reporting Tools
- Selenium - Reporting Tools
- Selenium - TestNG
- Selenium - JUnit
- Selenium - Allure
- Selenium & other Technologies
- Selenium - Java Tutorial
- Selenium - Python Tutorial
- Selenium - C# Tutorial
- Selenium - Javascript Tutorial
- Selenium - Kotlin Tutorial
- Selenium - Ruby Tutorial
- Selenium - Maven & Jenkins
- Selenium - Database Testing
- Selenium - LogExpert Logging
- Selenium - Log4j Logging
- Selenium - Robot Framework
- Selenium - AutoIT
- Selenium - Flash Testing
- Selenium - Apache Ant
- Selenium - Github Tutorial
- Selenium - SoapUI
- Selenium - Cucumber
- Selenium - IntelliJ
- Selenium - XPath
- Selenium Miscellaneous Concepts
- Selenium - Automation Frameworks
- Selenium - Keyword Driven Framework
- Selenium - Data Driven Framework
- Selenium - Hybrid Driven Framework
- Selenium - SSL Certificate Error
- Selenium - Alternatives
- Selenium Useful Resources
- Selenium - Quick Guide
- Selenium - Useful Resources
- Selenium - Automation Practice
- Selenium - Discussion
Selenium Webdriver - JavaScript Executor
Selenium Webdriver can be used to execute JavaScript commands to interact with the html of the elements appearing within a browser on a page with the help of the JavaScriptExecutor interface. Sometimes, the locators available in Selenium Webdriver fail to interact with the elements on a page, in those scenarios we can take the help of the JavaScriptExecutor methods.
Let us discuss some of the methods available in JavaScriptExecutor interface −
executeScript method − This method is used to execute JavaScript in a window or frame currently active. It is an anonymous function, supports various data types like WebElements, Long, String, Lists, and Boolean.
executeAsyncScript method − It is a multi-threaded approach to execute individual JavaScript tasks on window or frame in currently active. It allows page parsing to continue, optimizing performance and providing great flexibility. This method enables the asynchronous JavaScript to be executed in an optimal way.
Let us see the steps to be performed inorder to run JavaScript commands along with Selenium Webdriver using the JavaScriptExecutor interface.
Step 1 − Package import for JavaScriptExecutor.
Step 2 − Creating a reference variable JavaScriptExecutor interface.
Step 3 − Calling the JavaScriptExecutor methods.
Syntax
import org.openqa.selenium.JavascriptExecutor; JavascriptExecutor j = (JavascriptExecutor) driver; j.executeScript(script, args);
Example
Let us take an example of the below page, where we would launch an application with a URL − https://www.tutorialspoint.com/selenium/
Then, get the text: Selenium - Automation Practice Form, and domain as www.tutorialspoint.com. Next we would enter the text Selenium in the input box beside the Name label.
Then, we would click on the Login button, after which we would be navigated to another page having a text as Welcome, Login In. Finally, we would refresh the browser and again obtain the text, URL and domain as Welcome, Login In, https://www.tutorialspoint.com/selenium/ and www.tutorialspoint.com respectively.
Syntax
Syntax with JavaScriptExecutor −
// Initiate the Webdriver WebDriver driver = new ChromeDriver(); // Creating a reference variable JavaScriptExecutor interface. JavascriptExecutor j = (JavascriptExecutor) driver; // launching a URL j.executeScript("window.location ='https://www.tutorialspoint.com/selenium/practice/selenium_automation_practice.php'"); // getting current URL String url = j.executeScript("return document.URL;").toString(); System.out.println("Getting the current URL: " + url); //identify text WebElement t = driver.findElement(By.xpath("/html/body/div/header/div[2]/h1")); // get text String text = (String) j.executeScript("return arguments[0].innerText", t); System.out.println("Text is: " + text); // getting current domain String domain = j.executeScript("return document.domain;").toString(); System.out.println("Getting the current domain: " + domain); // enter text in input box WebElement e = driver.findElement(By.xpath("//*[@id='name']")); j.executeScript("arguments[0].value='Selenium';", e); // get text entered String text1 = (String) j.executeScript("return arguments[0].value", e); System.out.println("Entered text is: " + text1); // perform click WebElement b = driver.findElement(By.xpath("//*[@id='collapseTwo']/div/ul/li[2]/a")); j.executeScript("arguments[0].click();", b); // identify text WebElement w = driver.findElement(By.xpath("//*[@id='signInForm']/h1")); // get text after click String text2 = (String) j.executeScript("return arguments[0].innerText", w); System.out.println("Text found after clicking: " + text2); // refresh browser j.executeScript("history.go(0)");
Code Implementation on JavaScriptsExe.java class file.
package org.example; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import java.util.concurrent.TimeUnit; public class JavaScriptsExe { public static void main(String[] args) throws InterruptedException { // Initiate the Webdriver WebDriver driver = new ChromeDriver(); // adding implicit wait of 25 secs driver.manage().timeouts().implicitlyWait(25, TimeUnit.SECONDS); // Creating a reference variable JavaScriptExecutor interface. JavascriptExecutor j = (JavascriptExecutor) driver; // launching a URL j.executeScript("window.location ='https://www.tutorialspoint.com/selenium/practice/selenium_automation_practice.php'"); // getting current URL String url = j.executeScript("return document.URL;").toString(); System.out.println("Getting the current URL: " + url); //identify text WebElement t = driver.findElement(By.xpath("/html/body/div/header/div[2]/h1")); // get text String text = (String) j.executeScript("return arguments[0].innerText", t); System.out.println("Text is: " + text); // getting current domain String domain = j.executeScript("return document.domain;").toString(); System.out.println("Getting the current domain: " + domain); // enter text in input box WebElement e = driver.findElement(By.xpath("//*[@id='name']")); j.executeScript("arguments[0].value='Selenium';", e); // get text entered String text1 = (String) j.executeScript("return arguments[0].value", e); System.out.println("Entered text is: " + text1); // perform click WebElement b = driver.findElement(By.xpath("//*[@id='collapseTwo']/div/ul/li[2]/a")); j.executeScript("arguments[0].click();", b); //identify text WebElement w = driver.findElement(By.xpath("//*[@id='signInForm']/h1")); // get text after click String text2 = (String) j.executeScript("return arguments[0].innerText", w); System.out.println("Text found after clicking: " + text2); // refresh browser j.executeScript("history.go(0)"); // getting current URL after browser refresh String url1 = j.executeScript("return document.URL;").toString(); System.out.println("Getting the current URL after browser refresh: " + url1); //identify text again after refresh WebElement y = driver.findElement(By.xpath("//*[@id='signInForm']/h1")); // get text after refresh String text3 = (String) j.executeScript("return arguments[0].innerText", y); System.out.println("Text found after refresh: " + text3); // getting current domain after browser refresh String domain1 = j.executeScript("return document.domain;").toString(); System.out.println("Getting the current domain after browser refresh: " + domain1); // Quitting browser driver.quit(); } }
Output
Getting the current URL: https://www.tutorialspoint.com/selenium/practice/selenium_automation_practice.php Text is: Selenium - Automation Practice Form Getting the current domain: www.tutorialspoint.com Entered text is: Selenium Text found after clicking: Welcome, Login In Getting the current URL after browser refresh: https://www.tutorialspoint.com/selenium/practice/login.php Text found after refresh: Welcome, Login In Getting the current domain after browser refresh: www.tutorialspoint.com Process finished with exit code 0
In the above example, we had launched a URL and obtained the current URL with the message in the console − Getting the current URL: https://www.tutorialspoint.com/selenium/
Then retrieved the text and domain with the message in the console Text is: Selenium - Automation Practice Form and Getting the current domain: www.tutorialspoint.com respectively.
Next, we entered the text Selenium in an input box and retrieved its value with the message in the console - Entered text is: Selenium. Then, we clicked the Login link and got the text after navigation with the message in console: Text found after clicking: Welcome, Login In. Finally, we had refreshed the page and obtained current URL, text and domain of the page with the messages in the console - Getting the current URL after browser refresh: https://www.tutorialspoint.com/selenium/
Text found after refresh: Welcome, Login In, and Getting the current domain after browser refresh: www.tutorialspoint.com respectively.
Finally, the message Process finished with exit code 0 was received, signifying successful execution of the code.
Example
Let us now discuss how to perform a scroll down to the bottom of a web page with the help of scrollTo method and get the button Login appearing at that page bottom as shown in the below image. The scrollTo method takes two parameters - horizontal and vertical vertices.
Syntax
Syntax to scroll down to page bottom −
JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver; javascriptExecutor.executeScript ("window.scrollBy(0,document.body.scrollHeight)");
Code Implementation on PageDownsScroll.java class file.
package org.example; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import java.util.concurrent.TimeUnit; public class PageDownsScroll { public static void main(String[] args) throws InterruptedException { // Initiate the Webdriver WebDriver driver = new ChromeDriver(); // adding implicit wait of 12 secs driver.manage().timeouts().implicitlyWait(12, TimeUnit.SECONDS); //Opening the webpage where we will perform the scroll driver.get("https://www.tutorialspoint.com/selenium/practice/selenium_automation_practice.php"); // JavascriptExecutor to scrolling to page bottom JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver; javascriptExecutor.executeScript("window.scrollBy(0,document.body.scrollHeight)"); // access element at page bottom after scrolling WebElement w = driver.findElement(By.xpath("//*[@id='practiceForm']/div[11]/input")); System.out.println("Verify element presence after scroll down: " + w.isDisplayed()); // quitting the browser driver.quit(); } }
Output
Verify element presence after scroll down: true Process finished with exit code 0
Example
Let us take an example of the below page where we would create an alert on a webpage using JavaScriptExecutor and obtain the text Tutorialspoint.
Syntax
// Creating a reference variable JavaScriptExecutor interface. JavascriptExecutor j = (JavascriptExecutor) driver; // create an Alert j.executeScript("alert('Tutorialspoint!!!');");
Code Implementation on JavaScriptAlert.java class file.
package org.example; import org.openqa.selenium.*; import org.openqa.selenium.chrome.ChromeDriver; import java.util.concurrent.TimeUnit; import org.openqa.selenium.JavascriptExecutor; public class JavaScriptAlert { public static void main(String[] args) throws InterruptedException { // Initiate the Webdriver WebDriver driver = new ChromeDriver(); // adding implicit wait of 20 secs driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); // Creating a reference variable JavaScriptExecutor interface. JavascriptExecutor j = (JavascriptExecutor) driver; // create an Alert j.executeScript("alert('Tutorialspoint!!!');"); // switch driver context to alert Alert alrt = driver.switchTo().alert(); // Get alert text String s = alrt.getText(); System.out.println("Alert text is: " + s); // Quitting browser driver.quit(); } }
Output
Alert text is: Tutorialspoint!!! Process finished with exit code 0
In the above example, we had created an alert and obtained its text with the message in the console - Alert text is: Tutorialspoint!!!
Finally, the message Process finished with exit code 0 was received, signifying successful execution of the code.
Example
Let us take another example of the below page, where would check the checkbox to select the Main Level 2 option with the help of JavaScript Executor −
Syntax
// Initiate the Webdriver WebDriver driver = new ChromeDriver(); // Creating a reference variable JavaScriptExecutor interface JavascriptExecutor j = (JavascriptExecutor) driver; WebElement chkbox = driver.findElement(By.xpath("<value of xpath>")); j.executeScript("document.getElementsByName('<value of name>')[0].checked=true;"); // check if checkbox is selected System.out.println("Checkbox is selected: " + chkbox.isSelected());
Code Implementation on JavaScriptHandlesCheckbox.java class file.
package org.example; import org.openqa.selenium.*; import org.openqa.selenium.chrome.ChromeDriver; import java.util.concurrent.TimeUnit; import org.openqa.selenium.JavascriptExecutor; public class JavaScriptHandlesCheckbox { public static void main(String[] args) throws InterruptedException { // Initiate the Webdriver WebDriver driver = new ChromeDriver(); // adding implicit wait of 20 secs driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); // Creating a reference variable JavaScriptExecutor interface JavascriptExecutor j = (JavascriptExecutor) driver; // Opening the webpage where we will check checkbox driver.get("https://www.tutorialspoint.com/selenium/practice/check-box.php"); // identify checkbox with xpath WebElement chkbox = driver.findElement(By.xpath("//*[@id='c_bs_2']")); // check the checkbox j.executeScript("document.getElementById('c_bs_2').checked=true;"); // check if checkbox is selected System.out.println("Checkbox is selected: " + chkbox.isSelected()); // Quitting browser driver.quit(); } }
Output
Checkbox is selected: true Process finished with exit code 0
In the above example, we had checked a checkbox and validated if it is checked with the message in the console - Checkbox is selected: true
Finally, the message Process finished with exit code 0 was received, signifying successful execution of the code.
In this tutorial, we had discussed how to use JavaScriptExecutor using Selenium Webdriver.
To Continue Learning Please Login
Login with Google