花了1天时间找到解决以下问题的方法:
使用selenium WD无法执行简单的js代码。它总是返回NullPointerException。已经读过很多答案,但仍然找不到原因。下面的代码是经过1天调查后的代码(我刚尝试了所有内容):
WebDriver driver2;
JavascriptExecutor js = (JavascriptExecutor)driver2;
driver.get(baseUrl+ "/");
js.executeScript("return showAlert()");
以下是原始代码无效:
public class DPT_class {
private WebDriver driver;
@Before
driver = new FirefoxDriver();
JavascriptExecutor js = (JavascriptExecutor) driver;
@Test
//some testing code here
driver.get(baseUrl+ "/");
js.executeScript("return showAlert()");
}
对于任何其他js代码(例如带有和不带返回和引号的alert(document.title))也是如此。 * baseUrl当然是预定义的。
谢谢!
答案 0 :(得分:2)
正如@Smit所说,并按照NullPointerException
你从来没有真正初始化你的WebDriver
对象,并且你正在试图将一个空对象转换为JavaScriptExecutor。
根据您要使用的浏览器类型,您可以执行..
WebDriver driver = new ChromeDriver();
WebDriver driver = new FirefoxDriver(); // etc...
另外,为什么要尝试使用2个驱动程序对象?你应该只有1.保持你的对象名为driver
。
答案 1 :(得分:0)
已更改
private WebDriver driver;
driver = new FirefoxDriver();
JavascriptExecutor js = (JavascriptExecutor) driver;
到
WebDriver driver = new FirefoxDriver();
JavascriptExecutor js = (JavascriptExecutor) driver;
不知道为什么,但它现在有效!非常感谢!