2011-10-24 36 views
3

PHPUnit Selenium基類可以選擇在失敗時進行截圖,這對於找出測試失敗的原因有很大的幫助。然而,selenium服務器在顯式調用assert*(比如我們試圖用一個不存在的元素做某事)之外的任何錯誤情況下都會返回錯誤而不是錯誤。如果我在服務器報告錯誤後嘗試製作屏幕截圖,則會收到另一個錯誤消息,指出服務器已經丟棄了該會話。有什麼方法可以改變這種行爲嗎?在失敗的selenium命令後創建屏幕截圖

更新:這是因爲PHPUnit在接收到錯誤時斷開連接。我能夠通過對PHPUnit代碼的一些(相當醜陋的)操縱來改變它。

回答

1

它不是硒服務器,但SeleniumTestCase類PHPUnit的3.4,其自動發送當它檢測到錯誤時發出停止命令(Driver.php第921行)。 PHPUnit 3.6似乎更好地處理錯誤。

1

將這些交互作爲測試用例。

例如在perl中, 如果寫成如下,並且由於不存在的元素而失敗。該腳本將錯誤

$sel->type("email-id","trial\@trial.com"); 

雖然如果上述步驟是通過如下

$sel->type_ok("email-id","trial\@trial.com"); 

寫它如果存在不存在的單元,測試由作爲測試用例案件將只有失敗,腳本將繼續。

因此,通過使用模塊use Test::More;使用TAP(測試任何協議),如果在函數後添加_ok,函數返回將用於確定測試用例的命運。

即。 - 「O」的返回裝置測試失敗

和「1」的返回裝置,所述測試傳遞

+0

' _ok'只是在測試一個包裝::萬維網::硒,它將調用''再處理某種程度上返回值。這沒有幫助;只要調用'',硒服務器就會丟棄會話,並且我無法獲取屏幕截圖。 – Tgr

+0

罷工;看起來PHPUnit是一個丟掉會話的人。 – Tgr

0

我想你可以覆蓋方法「travelbox」,讓這樣的事情:

public function onNotSuccessfulTest(Exception $e){ 
     file_put_content('/xxx/xxx.jpg', $this->currentScreenshot()); 
}