1.啟動appium;

appium的rest http 介面開始監聽 4723 埠;

2.執行 python 指令碼;

appium接收到一個post請求 /wd/hub/session,並攜帶了 capabilities 字典引數;

3.appium建立session;

呼叫 AppiumDriver.createSession() 方法,並把攜帶的引數傳入;

建立成功session,顯示session id;

4.找到jdk和adb;

5.檢查android還是ios,判斷是否連線裝置、系統版本號、裝置名稱;

6.啟動建立的 session,連線裝置,獲取裝置的詳情資訊;

7.開始執行,執行 UiAutomator ,找到 AppiumBootstrap.jar ,並 push 到手機上;找到 要執行的包名,並嘗試連線裝置;失敗後,會重新執行 UiAutomator ,嘗試連結裝置;喚醒螢幕,啟動測試程式;

8.請求 close url,呼叫 AppiumDriver.closeApp() 方法,傳入引數 session id;

關閉會話,等待60秒;

關閉session會話,刪除session id;

通過adb命令向android傳送 shutdown 命令,AndroidBootstrap 接收並返回結果;

9.關閉 UiAutomator;

需要知道的

1.android通過package來識別app的。如果倆apppackage一樣,只能安裝一個,另一個安裝時會提示已安裝或直接覆蓋上一個app;

Activity為app提供螢幕顯示內容,也就是介面化,所有的UI都顯示在Activity;

啟動app時,手機先通過package找到要啟動的app,然後再查詢主Activity啟動。一般為歡迎頁面、登入頁面或其他主頁面;

app的UI測試就是要測試各Activity的頁面元素;

2.appium是C/S架構,核心是web伺服器,它提供一套REST的介面,會接收到客戶端的連線,監聽到命令。執行會再將結果通過Http響應返回給客戶端;

appium服務端會建立一個session,自動化始終圍繞一個session進行。不同語言有不同實現方式,但最終都會是傳送一個Post請求給服務端,請求中包含一個Json物件,被稱作‘Desired Capabilities’,Desired Capabilities是一些鍵值對的集合,客戶端將這些鍵值對發給服務端,告訴服務端我們想怎麼測試。