Больше контроля над тем, что распечатывается при обнаружении исключения
Есть ли способ получить конкретную информацию из исключения при возникновении исключения?
Например, когда я звоню printStackTrace
Я получаю много информации... но иногда я получаю слишком много информации, и большая ее часть - это не те вещи, которые мне нужно видеть, поскольку в любом случае это всегда одна и та же информация.
По крайней мере, когда дело доходит до Selenium Webdriver, он сначала говорит мне, в чем проблема
com.thoughtworks.selenium.SeleniumException: Element blah not found
at org.openqa.selenium.internal.seleniumemulation.ElementFinder.findElement(ElementFinder.java:92)
at org.openqa.selenium.internal.seleniumemulation.Click.handleSeleneseCommand(Click.java:35)
at org.openqa.selenium.internal.seleniumemulation.Click.handleSeleneseCommand(Click.java:1)
at org.openqa.selenium.internal.seleniumemulation.SeleneseCommand.apply(SeleneseCommand.java:35)
at org.openqa.selenium.internal.seleniumemulation.Timer.run(Timer.java:40)
at org.openqa.selenium.WebDriverCommandProcessor.execute(WebDriverCommandProcessor.java:140)
...
Caused by: org.openqa.selenium.WebDriverException: ...
...
...
...
Затем он рассказывает мне о моей среде, возможностях (с другим списком сообщений) и другой "вызванной" информацией.
Это довольно длинное сообщение, и я не хочу, чтобы оно загромождало мой лог-файл. Есть ли способ пропустить все "вызванные" связанные сообщения?
Я старался getMessage
но это только говорит
Element blah not found
Что не полезно. Хотелось бы хотя бы посмотреть, с какой это строки.
1 ответ
Конечно, получите только первые несколько кадров стека и проанализируйте их. использование getStackTrace
чтобы получить StackTraceElement[]
и перебирайте их, пока не получите кадр в вашем пакете(или, в противном случае, вы хотите его отфильтровать), чтобы получить правильную строку. Внутренние линии Selenium, вероятно, не те, которые вам нужны.
На этот элемент вы можете позвонить getMethodName
, getLineNumber
и тому подобное.