【发布时间】:2014-07-27 08:50:29
【问题描述】:
我在 HTML 中的 Javascript 代码如下:
function CallMe(a,b){
alert("Hello");
var c = a + b;
return c;
}
我的 Selenium-WebDriver 的 Java 代码如下
JavascriptExecutor executor = (JavascriptExecutor)driver;
Object result = null;
try{
result = executor.executeScript("return(CallMe(5,4))");
driver.switchTo().alert().accept();
}catch(NoAlertPresentException ex){
System.out.println("Alert not found");
}
driver.manage().timeouts().setScriptTimeout(30,TimeUnit.SECONDS);
System.out.println(result.toString());
现在以下 java 程序的输出是“Hello”,这是警报框的文本,而如果我删除警报框,那么结果是“9”,这是我所期望的。
有人可以建议为什么在遇到警报框时不执行 JavaScript 的其余语句,而且我在 Java 代码中也接受该警报框。
另外一个替代解决方案将受到高度赞赏。
【问题讨论】:
-
我不确定,但不应该只是
result = executor.executeScript("CallMe(5,4)");吗? -
如果我们去掉executeScript方法的“return”语句,在上面提到的Java程序中会抛出一个空指针异常,因为“result”变量没有得到任何值。
标签: java javascript selenium selenium-webdriver webdriver