Android UI自動化框架 - base U2

UI自動化框架 /分層git


(1) 基礎層  baseapi- 自動化框架api 如 webdriver uiautomator,解耦,二次封裝,loggithub

一、頁面跳轉或者異步加載延遲出現的界面,無需再單獨使用sleep
二、testwatcher對於系統隨機出現的可能會影響App界面的一些因素(例如Android6.0的受權彈框、電話呼入),無需再單獨處理
三、全部調用封裝後框架的操做,都會記錄日誌
四、框架自己有斷言能力,若是在框架處理異常狀況後還找不到指定控件,這時候會截圖而且斷言
五、若是須要替換框架或者框架升級,可使用最小的成原本框架層進行改動,而不須要改動用例層和Word層web


(2)  公共業務封裝層 bussines 數據庫

公用業務抽取,業務邏輯處理,相似關鍵字處理api


(3)  用例層 testcase 框架

1.case編寫 要求高度可讀,不作過多邏輯判斷。邏輯判斷放bussines
2.不能有寫死的sleep。封裝在底層,遞增等待機制
3.UI自動化要儘可能減小ui操做
4.公共抽取放bussines,調用bussins層封裝公用的可讀性強的關鍵字
5.失敗重跑須要保持case之間的獨立性異步

 

(4) 框架層 runner總控ui

1.自定義runner
2.失敗重跑:
junit 實現custom rule,監控程序運行異常時候catch住,再運行一次。 運行完把失敗的case再廣播給執行的apk運行
testng 實現listen重跑次數。 運行完在output文件夾下運行failed的case
失敗檢查:在失敗重跑前,檢查wifi等容易致使case失敗的信息
3.testwater異常處理
4.report生成/email發送spa

 

影響類:設計

設計類:重複耦合,受迭代影響-座標寫死,靜態等待
環境類:環境不穩定-wifi,adb,系統彈框,數據類影響-專用數據庫,沒法兼容所有機型

 

示例: https://github.com/seasonxie/uiautomator2.0

 單例全部base類:

public class BaseApi {
    private static BaseApi instance;
    public synchronized static BaseApi getInstance() {
        if (instance == null) {   
            instance = new BaseApi();
        }
        return instance;
    }
}
相關文章
相關標籤/搜索