Hello, Welcome to Selenium Tutorials in this post we will see how we can introduce Javascript in Selenium Webdriver and what are the usage?
What is JavaScript
JavaScript is one of the programming languages of the Web.
All modern HTML pages are using JavaScript.
For more details, you can refer Wikipedia – JavaScript
Use of Javascript in Selenium Webdriver
We have used Java in our script and we implemented almost all features but some features we can’t handle or implement using Java so we need scripting language as well which can control server side or client side
Implement JavaScript in Selenium Webdriver
To execute JavaScript in our webdriver script we do not have to write the separate code we have one predefined interface available.
JavascriptExecutor is an Interface which is available in package org.openqa.selenium.JavascriptExecutor;
Inside this Interface we have some predefined method called executeScript()- so whatever script you will pass as a String It will be executed by JavascriptExecutor.
Note- This is the most common question in the interview that how to type in Selenium without using the sendKeys method.
Let us implement Javascript in Selenium Webdriver
Program 1- How to type in Selenium without using sendKeys() method
import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.firefox.FirefoxDriver; public class TestFirefox { public static void main(String[] args) throws InterruptedException { // Open Firefox browser FirefoxDriver driver=new FirefoxDriver(); // Maximize the window driver.manage().window().maximize(); // Open applicatiion driver.get("enter your application URL"); // This will execute JavaScript in your script ((JavascriptExecutor)driver).executeScript("document.getElementById('some id').value='mukesh';"); } }
Program 2- How to click in Selenium if button or radio button is disable
package seleniumday1; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.firefox.FirefoxDriver; public class TestFirefox { public static void main(String[] args) throws InterruptedException { // Open Firefox browser FirefoxDriver driver=new FirefoxDriver(); // Maximize the window driver.manage().window().maximize(); // Open applicatiion driver.get("enter your application URL"); // This will execute JavaScript in your script ((JavascriptExecutor)driver).executeScript("document.getElementById('enter your element id').click();"); } }
Program 3- How to uncheck checkbox in Selenium if checkbox is disable
package seleniumday1; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.firefox.FirefoxDriver; public class TestFirefox { public static void main(String[] args) throws InterruptedException { // Open Firefox browser FirefoxDriver driver=new FirefoxDriver(); // Maximize the window driver.manage().window().maximize(); // Open applicatiion driver.get("enter your application URL"); // This will execute JavaScript in your script ((JavascriptExecutor)driver).executeScript("document.getElementById('enter element id').checked=false;"); } }
Please comment below if you are facing any issue.
Thanks for visiting my blog. Keep in touch.
Happy Testing
jaffar ali says
((JavascriptExecutor)driver).executeScript(“document.getElementById(‘some id’).value=’mukesh’;”);
In the above code, what is the “document”? Can you please explain
Thanks
Mukesh Otwani says
Hi Jaffar,
document here refers object which represents your web page so in order to access any element in your HTML page, you always start with document object.
Gaurav Khurana says
It would be great if you can share the application where the above example can be tested
Could you please help me with the below 2 problems which are coming in searcging elements on the below site
drv.get(“http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_checkbox_disabled2”);
WebElement el = drv.findElement(By.xpath(“//button[@onclick=’myFunction()’]”));
el.click();
((JavascriptExecutor)drv).executeScript(“document.getElementById(‘myCheck’).click();”);
Problem 1 :- System is not able to find the element by xpath(even though it works in firepath)
I have changed it to
WebElement el = drv.findElement(By.cssSelector(“button[onclick*=’my’]”));
this is also detectable via firepath but not by program
Problem 2 :- there is an element with id = myCheck but that is also not able to detect while executing the above javascript
Mukesh Otwani says
Hey Gaurav,
The reason why your code is not working because it is inside frame so you can try the same html code in normal html file and try again.
Gaurav Khurana says
hi
Could you please share the situation where we may need to use javascript instead of selenium commands, apart from the interview question thing
Mukesh Otwani says
Hi Gaurav,
Below post will solve your queries http://learn-automation.com/click-in-selenium-webdriver-using-java-script/
and http://learn-automation.com/invalidelementstateexception-in-selenium-webdriver/
Ashley says
Thanks alot Mukesh for this useful tutorial. Please share me the answer of interview questions.
Best,
Ashley
Mukesh Otwani says
Hey Ashley,
Kindly join mailing list to get Answers 🙂
vijay says
Hi Mukesh
its really helpful. Many thanks for your kind efforts
Mukesh Otwani says
Hey Vijay,
Most welcome keep visiting.
hanumanthappa says
Hi MuKesh,
Please share me interview question links
Regards
Hanuamthappa
Mukesh Otwani says
Here you go
http://learn-automation.com/selenium-interview-questions-and-answers/