Automation tests 5 — Code Architecture 之三
再承上,來講這張圖的最下面
Driver 層
這部分完全就是操作了。在cucumber 系列,要對螢幕上的 view 物件做這些操作,你會需要知道對哪個物件操作,通常可以用它的 marked 或是 id 來下 query,(在web上,通常是用 XPATH當作 id 使用),就可以拿到 view 物件,再去操作就可以了。
一般而言,在做 automation 的時候,主要大概就是三個動作:
點擊:找到某個 view 物件,去點他
取得螢幕上的文字
輸入:對某個 view 物件輸入一些文字
所有這些操作,我們都拉出來放在獨立的檔案裡面。
Android 的基本操作
- 點擊:
因為啊, Android 的 find 機制是只能找在螢幕可視範圍內出現的 view 物件,所以假如在畫面內找不到,就要往下 drag 一點,再找一次.... 如此一直重複,直到找不到為止。
然後有時候,Android App 的關係吧,點了以後好像事件會沒吃到,所以又多寫了一點邏輯,變成了 find_and_click_for_good。
- 取得文字:
這裡要注意的是,query 出來的東西是一個 array of hashes,所以要用有點難懂的存取方式去拿到 array 裡面的第一個 hash 的 key 是 ‘text’ 的 value。哈哈,繞口令齁~在目前我們用到的所有測試中,都是在比較價錢的文字,所以,後面的 text.sub! 的操作,都是把金錢符號啊、可能的逗號與空白拿掉而已。
- 輸入:
也是一樣, Android 的 find 機制是只能找在螢幕可視範圍內出現的 view 物件,所以假如在畫面內找不到,就要往下 drag 一點,再找一次.... 如此一直重複,直到找不到為止。
- 底層的 API:
所有底層的 calabash-android 的 API,都可以在這個連結與目錄中找到:
https://github.com/calabash/calabash-android/tree/master/ruby-gem/lib/calabash-android/steps
最底層最底層的 API 在:
http://www.rubydoc.info/gems/calabash-android/Calabash/Android/Operations
iOS的基本操作
- 點擊:
因為 iOS 的 query 跟 android 運作方式不同,他是找整個螢幕上的 view 物件,包括在可是範圍外的,也可以被 query 得到,所以在 iOS 上就不用一直往下 drag 了。
- 取得文字
同 Android,一模模一樣樣!有沒有?我們當初就是直接 reuse 了這些 code。不用再寫一次。為什麼可以這樣 re-use 之後會講。
- 輸入:
就直接呼叫 set_text,例如,在 search_input_page 裡面:
- 底層的 API:
底層的 API 可以在這裡跟相關的目錄與文件找到:
http://calabashapi.xamarin.com/ios/Calabash/Cucumber/Operations.html
mWeb的基本操作
- 點擊:
- 取得文字:
- 輸入:
就直接呼叫 set_text
- 底層的 API
mobile web 跟 web automation 底層是差不多的,你可以參考:
跟這整個 github repo 的目錄~
XPATH tricks
為了提升 mWeb 的 XPATH 的可讀性,可以偷用 XPATH 的結構來做手腳,請見 Tony 的文章:
https://tonyspostitnote.wordpress.com/2017/05/26/find-selenium-xpath/#more-563
https://tonyspostitnote.wordpress.com/2017/05/31/1532/#more-651
留言
張貼留言