如果我在Python中用“try except”包装一段Selenium Webdriver代码,在except块中使用self.fail('some problem'),我不知道Selenium在那时会说些什么。如果没有try-except,Selenium会给出错误消息,例如关于元素的可见性或陈旧性等.Webdriver程序如何重新抛出Selenium错误报告?
答案 0 :(得分:2)
有几个选择:
try:
...
except SeleniumException as problem:
raise
或
try:
...
except SeleniumException as problem:
raise problem
两者都将重新抛出原始异常。第一个将保留原始堆栈(因此您可以看到Selenium本身),后者将处理异常,就好像它不是在Selenium内部而是在raise
点。
但通常您在此时有新信息,因此您可能希望在保留原始堆栈跟踪和异常信息的同时添加该信息。为此,有时在重新抛出之前更改捕获的异常;这是我不建议的,因为它不是一个非常通用的方法。我宁愿坚持以下内容:Python 3知道异常链接:
try:
...
except SeleniumException as problem:
raise MyNewException("some additional information") from problem
如果您需要更多功能或者您使用的是Python 2,您可以查看我的CausedException
课程。如果您需要为新异常提供多个原因(旧例外),也可以使用它。