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

Sud*_*kar 8 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);
Run Code Online (Sandbox Code Playgroud)

Sot*_*lis 12

这个javascript

function test() {arr = 111; return arr;}; 
test();
Run Code Online (Sandbox Code Playgroud)

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

所以

int a = (Integer) js.executeScript(testJS);
Run Code Online (Sandbox Code Playgroud)

将返回null并尝试取消引用,因为取消引用null抛出将失败NullPointerException.

Javadoc forJavascriptExecutor.html#executeScript(java.lang.String, java.lang.Object...)

也许你想要javascript

function test() {arr = 111; return arr;}; 
return test();
Run Code Online (Sandbox Code Playgroud)

这适合我

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);
Run Code Online (Sandbox Code Playgroud)