前言
在新版本的Appium中,很多的小伙伴們都發現了Appium底層的自動化引擎已經默認為UIAutomator2了,那么UIAutomator2與UIAutomator有什么區別呢?
- 首先,UiAutomator是Android自動化測試框架,是谷歌在Android4.1版本發布時推出的一款用Java編寫的UI測試框架。其最大的特點就是可以跨進程操作,我們可以使用UiAutomator框架提供的一些方便的API來對安卓應用進行一系列的自動化測試操作,如點擊、滑動、鍵盤輸入、長按以及常用的斷言方法等。可以替代以前繁瑣的手工測試。
- 而UIAutomator2是為UiAutomator的升級版本,修復了UIAutomator中的大部分問題,並且支持AccessibilityService(這也是獲取toast元素需要的),查找元素的效率也會比UIAutomator高很多。
既然現在Appium默認使用UIAutomator2引擎去實現Android端的自動化操作,那么對於其工作流程的實現我們有必要做了解,這樣當碰到問題的時候也不會不知所措。
Appium在和客戶端及手機端進行通訊的時候會輸出很多日志,通過日志我們可以知道Appium在初始化過程中做了哪些事情。
接下來我們開始逐行進行分析:
1、啟動Appium服務,端口和工作地址信息
2、向Appium服務發起一個post接口請求,請求的數據包含客戶端發送過來的DesiredCapalities配置。Appium會對應創建一個session,這個session用於后面客戶端和Appium服務通訊使用
3、這里告訴我們在Appium V1.13版本之前默認引擎為UIAutomator,較新版本Appium(V1.14)現在的默認引擎為UIAutomator2
4、檢測Android SDK的環境,包括build-tools組件、adb等等。並且還會通過adb獲取當前連接的設備情況,包括設備的API版本、設備是否在線等等。
5、檢測Appium Settings應用是否有安裝
6、將Settings應用從Appium本地目錄推送到手機端,並且進行安裝
7、啟動Appium Settings應用
8、檢查設備中是否有安裝io.appium.uiautomator2.server應用,發現沒有
9、檢查io.appium.uiautomator2.server應用的簽名情況:會通過Android SDK的build-tools目錄下的apksigner.bat對APK的簽名進行檢測,這里檢測通過。
10、以同樣的方式檢測應用io.appium.uiautomator2.server.test是否安裝->簽名
11、安裝應用io.appium.uiautomator2.servert和io.appium.uiautomator2.server.test
12、端口轉發,將Appium本地的8200端口和設備端的6790端口建立映射,此后Appium和設備端通過這條鏈路進行通訊。
13、檢測被測應用的安裝狀態,停止被測應用,清除被測應用的數據
14、停止io.appium.uiautomator2.server.test應用,通過adb shell am instrument啟動該應用,通過instrument可以啟動測試套件執行測試。
15、啟動被測應用