Selenium2/WebdriverJavaScript异常处理:错误消息大部分时间为空(Javaneneneba A

Selenium 2/Webdriver JavaScript exception handling: error message is null most of the time (Java API)

本文关键字:时间 Javaneneneba 大部分 消息 WebdriverJavaScript 异常处理 错误 Selenium2      更新时间:2023-09-26

我在Firefox 10中使用Selenium 2.20。

当我执行JavaScript代码时:

try {    
  ((JavascriptExecutor) webDriver.executeScript(script, args);
} catch(Exception e) {
  System.err.println(e.getMessage());
}

并且代码包含或产生JavaScript异常,我无法检索到错误消息。相反,它大部分时间都返回null。

我也试过这个JS代码:

// error handling
window.onerror = function(msg, url, linenumber) {
    var error = document.createAttribute("javaScriptErrorMessage");
    error.nodeValue = msg + "'n  at line number " + linenumber + " (URL: " + url + ")";
    document.getElementsByTagName("body")[0].setAttributeNode(error);
};

但这似乎也不起作用。当我试图在body标记中获取error属性时,它也等于null。

这是我在Java中遇到的异常:

org.openqa.selenium.WebDriverException: null (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 8 milliseconds
Build info: version: '2.20.0', revision: '16008', time: '2012-02-28 15:00:40'
System info: os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.35-32-generic', java.version: '1.6.0_20'
Driver info: driver.version: RemoteWebDriver

相关部分似乎是消息WARNING: The server did not provide any stacktrace information。但我不知道为什么会发生这种事。也许是需要更改的Firefox设置?

我是否错误地使用了JavascriptExecutor?

当使用JavascriptExecutor时,您总是需要返回一些东西,请尝试执行:

try {    
  ((JavascriptExecutor) webDriver.executeScript("return " + script, args);
} catch(Exception e) {
  System.err.println(e.getMessage());
}