Обработка исключений JavaScript Selenium 2 / Webdriver: сообщение об ошибке в большинстве случаев равно нулю (Java API) - PullRequest
3 голосов
/ 05 марта 2012

Я использую Selenium 2.20 с Firefox 10.

Когда я выполняю код JavaScript:

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

и код содержит или создает исключение JavaScript, я не могу получить сообщение об ошибке. Вместо этого он возвращает ноль большую часть времени.

Я также попробовал этот код 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);
};

Но, похоже, это тоже не работает. Когда я пытаюсь получить атрибут error в теге body, он также равен нулю.

Это исключение, которое я получаю в 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?

1 Ответ

1 голос
/ 18 февраля 2013

Вам всегда нужно что-то возвращать при использовании JavascriptExecutor, попробуйте сделать:

try {    
  ((JavascriptExecutor) webDriver.executeScript("return " + script, args);
} catch(Exception e) {
  System.err.println(e.getMessage());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...