driver.executeScript() returns NullPointerException for simple javascript
java, selenium, selenium-webdriver, webdriver
Solution
This javascript
function test() {arr = 111; return arr;};
test();
Calls the method `test()` but doesn't do anything with the result, ie. doesn't return it to the caller.
So
int a = (Integer) js.executeScript(testJS);
will return `null` and try to be dereferenced which will fail because dereferencing `null` throws `NullPointerException`.
Javadoc for `JavascriptExecutor.html#executeScript(java.lang.String, java.lang.Object...)`
Maybe you want the javascript
function test() {arr = 111; return arr;};
return test();
This works for me
System.setProperty("webdriver.chrome.driver", "C:\\Users\\me\\Downloads\\chromedriver.exe");
ChromeDriver driver = new ChromeDriver();
JavascriptExecutor executor = (JavascriptExecutor) driver;
String js = "function test() {" +
"arr = 111; return arr;" +
"}; return test()";
Long a = (Long) executor.executeScript(js);
System.out.println(a);
Problem
`js.executeScript("return document.title")` works fine as expected but I'm not sure why my code returns null pointer error. what is wrong here? ``` String testJs= "function test() {arr = 111; return arr;}; test();"; JavascriptExecutor js = (JavascriptExecutor) driver; int a = (Integer) js.executeScript(testJS); ```