2014-02-06 42 views
0

如果我在Python中用“try except”包装一块Selenium Webdriver代码,在except块中用self.fail('some problem'),我不知道Selenium在那时会说什么。如果没有尝试,Selenium会给出一个错误消息,例如关于可见性或元素陈旧性等。Webdriver程序如何重新抛出Selenium错误报告?有没有办法重新抛出Selenium错误信息?

+0

你是在说[不带参数的''raise'](http://docs.python.org/2/reference/simple_stmts.html#grammar-token-raise_stmt)? – lanzz

+0

我不知道Python中的这个方法。我会尝试。 – Chakra

回答

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类。如果您需要为新的异常提供多个原因(旧异常),也可以使用它。

相关问题