2014-02-06 48 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類。如果您需要爲新的異常提供多個原因(舊異常),也可以使用它。

相關問題