一尘不染

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

selenium

js.executeScript("return document.title")可以按预期工作,但是我不确定为什么我的代码返回空指针错误。这是怎么了

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

阅读 577

收藏
2020-06-26

共1个答案

一尘不染

这个javascript

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

调用方法,test()但对结果不执行任何操作,即。不会将其返回给调用方。

所以

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

将返回null并尝试被取消引用,这将因为取消引用null引发而失败NullPointerException

JavadocJavascriptExecutor.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);
2020-06-26