跳到主要內容

Robot Framework Keyword: Failure Screenshot - 生死一瞬間,捕捉錯誤畫面

Problem

在Web testing中,常會使用到等待某些事件發生的keyword。如下圖使用了Wait Until Keyword Succeeds+Element Should Not Be Visible,其中三次之中失敗兩次。

RobotFramework會在這些keyword做retry時,capture下當時的screenshot。

假如每天都有跑自動測試且有保留報表的話,這些無用的圖片將會造成硬碟的負擔。尤其現在硬碟那麼貴,應該只要捕捉我們真正需要的圖片就好了!

How to?

在匯入SeleniumLibrary時,可以指定錯誤發生後要執行的動作。預設是在錯誤發生時,執行Capture Screenshot。這樣有兩個缺點,第一個是上面所提的:浪費空間;第二個是Capture Screenshot是抓取整個螢幕的畫面,如果你今天使用遠端去執行或螢幕保護程式啟動時,都將造成抓到的圖片是全黑的。針對這兩個缺點,我們可以這樣做:

  1. 取消Selenium預設動作。
  2. 在錯誤真正發生的時後,才去capture圖片,並改用Capture Page Screenshot抓圖。須注意有瀏覽器開著才會有用,否則會Fail。

取消Selenium預設動作

有兩種做法,一個是在Test Suite設定Library時,加入run_on_failure=Nothing參數;

也可以在testcase中,透過Impory Library的keyowrd將Selenium Library加入,並依樣給予run_on_failure=Nothing參數。

SeleniumLibrary允許你傳入許多參數,因此我偏好在使用時才去匯入。為此,通常我會將它與Start Selenium Server與啟動瀏覽器等動作一同放在TestSuite中。

錯誤發生時的動作

RobotFramework提供Run Keyword If Test Failed與Run Keyword If Any Tests Failed,讓你可以對TestCase與TestSuite兩個Scope在測試失敗時,執行對應的Keyword。以下圖範例來說,我在TestSuite的TestTearDown中宣告了這個Keyword,這代表TestCase預設的Teardown將會確認如果有錯就會抓圖。而SuiteTearDown則是呼叫Suite Teardown的Keyword,去做Stop Selenium Server與有錯抓圖的動作。



這兩個Keyword除了使用在拍照外,你也可以把它做成發生錯誤就寄信通知或將軟體中的log給保留起來等動作,以方便debug。

友藏內心獨白: 這個Keyword能找到不少bug阿!

留言

這個網誌中的熱門文章

PostgreSQL - Unattended installation on windows

Introduction 要將別人軟體包裝到自己軟體中,不可或缺的東西就是Unattended installation。以Unattended installation來說,我們可以選擇透過Installer的silent mode安裝,也可以透過把目標軟體做成portable的版本。本篇文章分享這兩種方法,教導大家如何將PostgreSQL透過Unattended installation方式安裝到目標系統成為service。 Note. 本篇以PostgreSQL 10.7為例。 Install with installer Tips 安裝程式或反安裝程式的參數,除了可以直接上官網搜尋Installation User Guide以外,也可以直接使用help參數查詢: postgresql- 10.7 - 2 -windows-x64.exe --help Windows安裝程式主要有EnterpriseDB與BigSQL兩種。BigSQL版本安裝元件是透過網路下載且支援參數不如EnterpriseDB版本多,以我們需求來說,我們傾向於使用EnterpriseDB版本。接下來分享給大家安裝與反安裝方法。 Installation @ echo off set INSTALL_DIR =C:\postgres10 set INSTALLER =postgresql- 10.7 - 2 -windows-x64.exe   rem options for installation set SSMDB_SERVICE =postgresql- 10 set MODE =--unattendedmodeui none --mode unattended   set DB_PASSWD =--superpassword postgres set DB_PORT =--serverport 5432   set SERVICE_NAME =--servicename % SSMDB_SERVICE %   set PREFIX =--prefix "%INSTALL_DIR%" set DATA_DIR =--datadir "%INSTALL_DIR%\data"   set OPTIONS =

How to install RIDE on Windows?

Introduction 多年沒在Windows上開發RobotFramework,趁著這次整理一下RIDE安裝方法。 目前RIDE最新版本與Python對應版本如下: (3.6 < python <= 3.11) Install current released version (2.0.8.1) with: pip install -U robotframework-ride 安裝Python 直接到Python官網找尋最新的3.11版本,我使用3.11.9: link 。安裝就是一直下一步而已。 安裝wxPython 每次安裝RIDE最困難的都是wxPython。看了一下 官網 描述,我就姑且相信一下: 接著進入下 載頁面 就有安裝教學。基本上就是到Python目錄下的Scripts直接執行以下command: pip install -U wxPython 安裝RIDE 接著就如RIDE官網所說,執行以下command: pip install -U robotframework-ride 啟動RIDE 直接在相同目錄下執行ride就可以啟動了,你也可以直接在桌面建ride連結,加快下次啟動時間。 沒想到這次這麼順利就安裝完成了。因為我是使用java去啟動robot framework,就不特別講要怎麼使用pip安裝robot framework了。

Hello World!

即將要搬家,因此舊網頁內容將慢慢轉移至Blogger。 如果要存取舊網頁,可以使用以下連結: https://wiki.tonylin.idv.tw/dokuwiki/doku.php