2017年8月9日 星期三

Automation tests 5 — Code Architecture 之二


承上,繼續來講這張圖的中間:






page definitions


這裡指的是某個頁面做的動作,比如說,登入頁面做的就是登入麻,所以我們定義了,登入頁面有個動作可以做,叫做是 “登入”。登入這個動作,會輸入帳號密碼按下按鈕,但是在 Android、iOS 與 mWeb 上,要各自實作這些輸入、按按鈕的細節。


所以,我們有個common 資料夾,在 common 資料夾裡面 (注意,這個 common 資料夾是跟 android_auto、ios_auto、mobile_web_auto、web_auto 同一層的!可見他可以被共用的。)定義很多共用的東西,比如說,用來結帳的信用卡啊,之類的。在這個資料夾裡面,有一個 page_definitions 資料夾,裡面的大部分檔案都是長這樣:def_XXXX_page.rb



這裡面定義的就是那一個頁面可以做的動作。比如說:def_login_page.rb

這是一個 module,他定義了三個方法:is_me、login_with_account 與 join_now

然後比如說,以 login_with_account 來說,這裡面會呼叫 login_with_account_implement 方法,就是由三個平台的 login_page 來實作了。



page_objects


各個平台的頁面,用物件導向的概念把它設計成 class,並且要 import 對應的 page definition,還要實作那些動作。

所以以 mWeb 的 login 頁面來說:


在 line 6 include 了 module,在 line 23, 30 實作了規定的動作,然後也需要有一些其他的 method,比如說 line 34 的 confirm_to_login。


其他 Android, iOS 的平台也都是類似的作法。



沒有留言:

張貼留言