經過Appium日誌,分析其運行原理

1.啓動appium;python

clipboard.png

 

appium的rest http 接口開始監聽 4723 端口;android

2.運行 python 腳本;ios

2.png

 

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

3.appium建立session;服務器

3.png

 

調用 AppiumDriver.createSession() 方法,並把攜帶的參數傳入;session

建立成功session,顯示session id;架構

4.找到jdk和adb;app

4.png

5.檢查android仍是ios,判斷是否鏈接設備、系統版本號、設備名稱;post

5.png

6.啓動建立的 session,鏈接設備,獲取設備的詳情信息;測試

6.png

7.開始執行,運行 UiAutomator ,找到 AppiumBootstrap.jar ,並 push 到手機上;找到 要運行的包名,並嘗試鏈接設備;失敗後,會從新運行 UiAutomator ,嘗試連接設備;喚醒屏幕,啓動測試程序;

7.png

8.請求 close url,調用 AppiumDriver.closeApp() 方法,傳入參數 session id;

關閉會話,等待60秒;

關閉session會話,刪除session id;

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

8.png

9.關閉 UiAutomator;

9.png

須要知道的

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

相關文章
相關標籤/搜索