driver.executeScript()为简单的javascript返回NullPointerException

时间:2013-08-29 21:01:34

标签: java selenium webdriver selenium-webdriver

js.executeScript("return document.title")正常工作,但我不确定为什么我的代码返回空指针错误。这有什么不对?

   String testJs= "function test() {arr = 111; return arr;}; test();";
   JavascriptExecutor js = (JavascriptExecutor) driver;
   int a = (Integer) js.executeScript(testJS);

2 个答案:

答案 0 :(得分:12)

这个javascript

function test() {arr = 111; return arr;}; 
test();

调用方法test()但不对结果做任何事情,即。不会将其返回给来电者。

所以

int a = (Integer) js.executeScript(testJS);

将返回null并尝试取消引用,但由于解除引用null会引发NullPointerException,因此会失败。

JavascriptExecutor.html#executeScript(java.lang.String, java.lang.Object...)

Javadoc

也许你想要javascript

function test() {arr = 111; return arr;}; 
return test();

这对我有用

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);

答案 1 :(得分:0)

是的,关键是不要忘记插入返回,f.e。:

Long dateNow = (Long) jse.executeScript("return Date.now()");