Friday, 10 August 2018

Use JavascriptExecutor to do many cool things in Selenium

Javascript is a very powerful language to interact with DOM. So it would make sense to use Javascript to run in browser using Selenium whenever there is no other way to work on particular element using Selenium.  

JavascriptExecutor is an interface. 
By creating object   JavascriptExecutor jse=(JavascriptExecutor)driver; 
we can use method executeScript to execute anything in browser using java script. 

Firstly, some of the basic things like scroll, get URL, Title can be performed using java script with following code. 

window.scrollBy(0,400); // x, y --> x is for horizontal scroll. y is for vertical scroll. And if you pass negative value it scrolls in other direction. 

document.URL;  // get URL of current browser
document.domain; // get domain of browser
document.title; // get title of the browser page. 

Now this code we can execute in selenium using... 

JavascriptExecutor jse=(JavascriptExecutor)driver; 
jse.executeScript("window.scrollBy(0,400);");

it would scroll down by 400 pixels from current position. 

You could also javascript returning some data such as in boolean, long, String, WebElement and using in your selenium code. 

Eg:
String currentURL= jse.executeScript(""return document.URL").toString();

Similarly you can write javascript to work on any element for that matter and call it in Selenium. 

Other approach you can use with JavascriptExecutor is to use elements created to execute in Javascript. 

Eg:

WebElement button=driver.findElement(By.name("Insert"));
button.click();
jse.executeScript("arguments[0].click();",button);


No comments:

Post a Comment

How to schedule RFT (Rational Functional Tester) scripts to run using Jenkins / schedule

How to schedule RFT (Rational Functional Tester) scripts to run using Jenkins / schedule 1. Create a batch file with following content ...