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是一些鍵值對的集合,客戶端將這些鍵值對發給服務端,告訴服務端我們想怎麼測試。