appium教程_2.概念加深
阿新 • • 發佈:2020-09-17
appium教程_2.概念加深
啟動步驟
安卓,driver為uiautomator2
通過檢視appium server的日誌來看整個啟動過程
- 啟動server,預設4723埠
- 通過/wd/hub/session介面,建立session,通過傳參中的desired capabilities指定啟動引數
- 通過本地的adb命令獲取裝置資訊和裝置API
如上圖,device api是 19,這是一臺安卓4的裝置,後續我換成了安卓8的裝置,api devel=27
- 給手機安裝appium setting應用)
- 判斷是否安裝了appium setting應用
- 啟動appium setting應用,進行一些設定
- 設定埠forward,用於UiAutomator2 Server,電腦端是8201 to 裝置端的6790
- 判斷是否安裝了 uiautomator2.server
- 已安裝的話,比較版本,安裝較新的版本
- 簽名
- 是否安裝uiautomator2.test
- 已安裝的話,比較版本,安裝新的
- 簽名
- 確認手機端的appium環境(instrumentation)是否OK,啟動uiautomator2 server
- 啟動服務,等待連線
- 通過session 獲取裝置資訊
- respond 客戶端,已經建立好了seesion
- 業務操作,我這裡是獲取當前current_activity
- 超時,自動delete seesion,預設60s
再看UiAutomator2
When client request to create a new AndroidDriver session, client passes desired capabilities to the appium node server. Based on the automationName
property in the desired capabilities, appium redirects to the corresponding driver module (by default appium passes to appium-android-driver on the absence of automationName
If the
automationName
is uiautomator2
then appium redirects to appium-uiautomator2-driver to create the new session.UIAutomator2 Driver Module: Creates the session , installs the appium uiautomtor2 server apks on the device, starts the server(Netty) and initiates a Netty server session.
UIAutomator2 Server Module: Once Netty server session initiated by driver module, server continues to listen on device for requests and responds accordingly until DELETE SESSION gets invoked.
再看流程
- 服務端啟動埠,持續監聽,預設為4723埠
- 客戶端,通過http協議連線服務端,通過desired_caps來指定驅動,本例子為(UiAutomator2)
- UiAutomator2 driver收到請求後建立session,準備環境
- 安裝appium setting
- 安裝uiautomator2 server
- 安裝uiautomator2 test
- 設定埠forwart,電腦端(或者說server端)8201 轉發到 手機端(或者說裝置端)6290
- 啟動環境,ready
- 應答client端
- 收到session建立ok的應答後,通過http請求傳送指令
- server端在60s(預設超時時間)沒有收到請求,自動刪掉session