js.executeScript("return document.title")
正常工作,但我不确定为什么我的代码返回空指针错误。这有什么不对?
String testJs= "function test() {arr = 111; return arr;}; test();";
JavascriptExecutor js = (JavascriptExecutor) driver;
int a = (Integer) js.executeScript(testJS);
答案 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...)
的也许你想要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()");