2015-04-01 156 views
1

我正在尝试将JavascriptExecutor用于我的代码,其中涉及传入一个WebElement并从中获取一些信息。我遇到了一些错误,所以我简化了它以找到问题。将参数传递给JavascriptExecutor的正确方法是什么?

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

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

那么,怎么了?我看不到任何在线示例和我的代码之间的差异,但显然有一些东西。我使用的是火狐webdriver的,和我的硒的版本是2.44.0

+1

“macon”是一个字符串,我猜你把它传递给javascript来执行什么? – 2015-04-01 13:08:35

+0

这只是一个测试字符串。我试图返回传入的任何参数,并在字符串测试中分配它。这是一个传入的参数不工作 – FelixVelariusBos 2015-04-01 13:43:30

回答

0

你只需要转换结果String

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

此外,还有硒2.44和Firefox 35 /之间的兼容性问题36,它受影响的JavaScript代码执行:

+0

是的,进入版本2.45修复了这个问题。谢谢! – FelixVelariusBos 2015-04-01 14:36:52

-1

尝试此代码:

JavaScriptExecutor js = (JavaScriptExecutor) driver; 

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