2013-09-01 188 views
0

在開發Selenium擴展中,我使用腳本來驗證正確處理失敗情況。不幸的是,我必須在IDE中逐個執行這些命令,並手動檢查每條錯誤消息。我想要做的是定義一個自定義的Selenium命令,我可以在每個故意以特定方式故障的命令之前插入該命令。例如:willFail | expected-error-text。如何攔截Selenium錯誤?

換句話說,我想改變Selenium命令完成行爲,以便如果下一個命令拋出給定的錯誤消息,那麼結果是成功並且腳本繼續。但是,如果它成功或拋出了一個不同的錯誤,那麼腳本會停止並顯示錯誤。

我想這將涉及設置觀察員功能和/或攔截硒功能。我期望的問題是:

  • 如何/在哪裏做初始化。相關的Selenium對象很難找到。
  • 什麼時候返回以改變結果。
  • 是否有其他內容通過更改結果而不同步?

PowerDebugger擴展允許您在發生故障時暫停IDE,然後繼續。所以我懷疑這個方法在哪裏。但我無法弄清楚它如何與Selenium命令處理掛鉤。 Samit Badle,你在外面嗎?

我使用的是Selenium IDE 2.2.0。

回答

0

通過一些實驗,我發現函數TestLoop.resume()負責確定每個命令的結果。 它在chrome/content/selenium-core/scripts/selenium-executionloop.js中定義。 該函數執行該命令,並停止腳本或允許它繼續。

要改變這種行爲,Selenium擴展可以使用自定義版本臨時替換此函數。爲此,請保存editor.selDebugger.runner.IDETestLoop.prototype.resume的引用,並將其替換爲自定義函數。自定義函數應該恢復本地函數,並根據需要執行命令執行。

+0

我已將這種技術以try/catch的形式併入[SelBlocks 2.0](https://addons.mozilla.org/en-US/firefox/addon/selenium-ide-sel-blocks/versions/) /終於支持。 –