捕获异常时可以更好地控制打印的内容

时间:2013-09-12 17:18:52

标签: java selenium-webdriver printstacktrace

是否有办法在发生异常时从异常中获取特定信息?

例如,当我打电话给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 个答案:

答案 0 :(得分:1)

当然,只获取前几个堆栈帧并解析它们。使用getStackTrace获取StackTraceElement[]并迭代它们,直到您在中获得一个框架(或者您想要过滤的其他内容)来获取正确的行。 Selenium内部线可能不是你需要的。

在此元素上,您可以拨打getMethodNamegetLineNumberthe like