appUI自動化
1、appium介紹
appium是一個自動化app的工具,繼承了selenium
http://appium.io
appium概念
2、 appium自動化環境搭建
1、java環境,JDK,設定java環境變數
檢視當前java版本 java -version
檢視當前Java安裝路徑:where java
java-1.8的版本,java根目錄設定系統環境變數,JAVA_HOME,
要在系統彈窗內能查到:set JAVA_HOME
2、安裝Android SDK
D:\fengkunlei\Android SDK Windows
https://www.androiddevtools.cn/#
下載解壓後根目錄下,開啟SDK Manager.exe檔案勾選配置 install
設定環境變數,將解壓後的檔案路徑,以下面的形式放置到系統環境變數的path裡
配置完成後,要在系統彈窗命令列內能查到版本:adb version
%ANDROID_HOME%\tools
%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\build-tools\21.0.2
3、安裝模擬器,或者真機
安裝完成後,連線模擬器:命令列執行:adb devices
List of devices attached
123456789ABCDEF device
輸出上面內容,表示連線成功
4、adb常用命令
1.列印當前連線的所有模擬器或者裝置
adb devices
2.連線裝置
adb connect <host>[:<port>]
3.終止adb服務程序
adb ki11-server
4.開啟adb服務程序
adb start-server
5.安裝app xxx.apk:包名
adb insta1l xxx.apk
6.刪除app xxx.apk:包名
adb uninsta1l xxx.apk
7.列印裝置上安裝的app包名
列印報名
adb she1l pm list packages
列印安裝路徑+包名
adb shell pm list packages -f
8.檢視當前正在執行的包名
adb shell dumpsys window | findstr 關鍵字
9.進入裝置控制檯
進入:adb she11
退出:exit
10.查詢當前頁面 activity位置 可以獲取appActivity,查詢app的初始化頁面,也就是第一個頁面
adb shell dumpsys activity activities
11.查詢入口activity還可以使用aapt 命令,命令語法如下:
aapt dump badging app包檔案(apk檔案)
5、Appium 伺服器
Appium 是用 Node.js 寫的伺服器。它可以從原始碼構建安裝或者從 NPM 直接安裝:
$ npm instal1 -g appium
$ appium
Appium 客戶端
有多個客戶端程式庫I(lava、Ruby、Pvthon、PHP、lavaScript和C#的)支援Appium對 WebDriver 協議的擴充套件,
你需要用這些客戶端程式庫代替通常的WebDriver 客戶端。在這裡瀏覽所有程式庫的列表。
AppiumDesctop
有 Appium 伺服器的圖形介面包裝器可以下載。
它們打包了 Appium 伺服器執行需要的所有東西,所以你不需要為 Node 而煩惱。
它們還提供一個Inspector 使你可以檢視你應用的層級結構,這在寫測試時很方便。
https://github.com/appium/appium-desktop/releases
6、appium自動化流程
1.appium啟動一個http服務,預設監聽在4723埠用接受appium客戶端傳送的指令
2.appium客戶端傳送請求與appium服務建立一個會話,需要攜帶必要的Desired Capabilities 引數
3.appium 檢查啟動引數
4. 啟動adb服務程序,預設埠5037
5.檢查連線裝置和平臺版本
6.安裝appum.setti
7.ngs並啟動
8.埠轉發建立UiAutomator2 Server的socket連線,adb所在平臺8200埠(可以透過引數systemPort設定),裝置平臺6790
9.安裝檢查 io,appium,uiautomator2.server和io,appium.uiautomator2.server.test和appiumuiautomator2-server-debug-androidTest
10.Starting UlAutomator2 server,等待3秒
11.向8200埠傳送get請求,獲取UlAutomator2 server的狀態
12.如果UlAutomator2 server線上,向8200埠傳送post請求傳遞建立會話引數
desired capabilities
上面appium的介紹中,我們瞭解到,desired capabilities是一些傳送給appium伺服器的鍵值對集合,告訴伺服器我們想要啟動什麼型別的會話。這裡我們主要用到如下鍵值對
鍵值 | 描述 | 值 |
---|---|---|
platformName | 使用的手機作業系統 | ios,Android,或者使用的手機作業系統 |
platformVersion | 手機作業系統的版本 | 例如:5.1.1 |
deviceName | 使用的手機或模擬器型別 | 使用 adb devices 命令可以返回一個有效的裝置列表 |
appPackage | 執行的 Android 應用的包名 | 例如:com.tencent.mm |
appActivity | Activity 的名字是指從你的包中所要啟動的androidacticity。 他通常需要再前面新增 | 例如.ui.LauncheruI |
noReset | 重置app裡的資料 | 預設為false |
重置策略
自動化平臺 | 預設 | fullReset | noReset |
---|---|---|---|
ios (包括xCuITest) | 測試完成後關閉模擬器。不銷燬模擬器。不從真機上解除安裝應用。 | 測試完成後解除安裝應用,模擬器測試結束後銷燬模擬酯。 | 測試結束後不銷燬或者關閉模擬器。啟動測試執行在任意正在執行的模擬器或者插入的真機。 |
Android | 測試結束後停止應用,清理應用資料,不解除安裝應用包。 | 測試結束後停止應用,清理應用資料,解除安裝應用包。 | 不停止應用,不清理應用資料,不解除安裝應用包。 |