将参数传递给JavascriptExecutor的正确方法是什么?

时间:2015-04-01 12:54:31

标签: java selenium nullpointerexception

我正在尝试将JavascriptExecutor用于我的代码,其中涉及传入WebElement并从中获取一些信息。我收到了一些错误,所以我将其简化以找到问题。

String test = ((JavascriptExecutor)driver).executeScript("return arguments[0];", "macon").toString();

该代码无法运行。它会抛出一个NullPointerException。我可以通过不尝试访问传递的变量来避免它。我通过的似乎并不重要;可以是int,string,WebElement等等。

那有什么不对?我看不出在线示例和我的代码之间有任何差异,但显然有一些东西。我正在使用Firefox WebDriver,而我的Selenium版本是2.44.0

2 个答案:

答案 0 :(得分:1)

您只需将结果转换为String

JavaScriptExecutor js = (JavaScriptExecutor) driver;
String test = (String) js.executeScript("return arguments[0];", "macon");

此外,selenium 2.44和Firefox 35/36之间存在兼容性问题,影响了javascript代码的执行:

答案 1 :(得分:-1)

试试这段代码:

JavaScriptExecutor js = (JavaScriptExecutor) driver;

String example=(String)js.executeScript('return $('table tbodt tr td:eq(0)')') .text();