這兩天把Appinum研究了下,在自己電腦上配置了下測試環境,這裏記錄下搭建過程。
1.JDK環境配置
之前做Java的時候下載安裝過jdk,但由於下載安裝的不是Oracle官網的jdk,導致下載android-sdk後運行SDK Manager.exe時就一閃而過,後來又重新下載了jdk配置環境後打開SDK Manager.exe才正常。
2.安裝配置Node.js
這裏可以百度Node.js的安裝過程,這裏用的是Desktop版的Appium-Server-GUI-windows。
3.下載安卓android-sdk
地址:https://www.androiddevtools.cn/,然後需要配置系統變量ANDROID_HOME,再環境變量中添加兩個%ANDROID_HOME%\tools和%ANDROID_HOME%\platform-tools。
右鍵使用管理員打開SDK Manager.exe,然後選中下圖Installed的包並下載,這個耗時畢竟久需等待。
4.下載Appium-Server、Appium Inspector,下載地址https://github.com/appium
5、下載安卓模擬器
這裏我用的夜神模擬器,安裝後在命令行輸入命令:adb devices,可以看到模擬器列表,如果出現下面的錯誤:list of devices attached時可以嘗試adb kill-server和adb start-server命令重啓下adb服務。
剛開始是平板模式,可以通過設置選擇手機模式
6、安裝appinum-doctor
使用命令行安裝appinum-doctor:npm -g install appium-doctor。
安裝後執行appium-doctor檢測配置是否成功。warn警告沒問題,error的需要注意。
7.啓動Appium Server
因爲需要在測試用例中執行adb shell命令,所有需要勾選Relaxed Security。
8.啓動模擬器
執行adb devices查看模擬器。
9.啓動Appium Inspector
Remote Path中輸入/wd/hub,然後設置Capability,platformVersion是模擬器版本。這裏appPackage設置的通訊錄的,至於怎麼獲取appPackage和appActivity,可以在模擬器中打開應用,然後使用命令:adb shell dumpsys window windows查看。
{ "platformName": "Android", "appium:platformVersion": "7.1.2", "appium:deviceName": "127.0.0.1:62001", "appium:appPackage": "com.android.contacts", "appium:appActivity": "com.android.contacts.activities.PeopleActivity", "appium:noReset": true, "appium:newCommandTimeout": "600", "appium:autoGrantPermissions": false }
最後點擊Start Session啓動
10.刷新Appium Inspector
開始時一直找怎麼刷新Appium Inspector頁面,但就是沒改變左側頁面,沒辦法獲取元素xpath等信息,後來發現原來是和模擬器有關聯,在模擬器打開頁面後,可通過點擊Appium Inspector頂部的圈圈刷新按鈕刷新頁面,這樣就能獲取新頁面元素的xpath。
11.安裝python類庫
前面說過Robotframework環境搭建,這裏就不介紹,主要安裝下面兩個類庫
pip install Appium-Python-Client
pip install robotframework-appiumlibrary
12.編寫測試用例
首先引入AppiumLibrary類庫,這裏是模擬人點擊來新增通訊錄。
*** Settings *** Library AppiumLibrary *** Test Cases *** test123 Open Application http://127.0.0.1:4723/wd/hub alias=myapp1 platformName=Android platformVersion=7.1.2 deviceName=127.0.0.1:62001 appPackage=com.android.contacts appActivity=com.android.contacts.activities.PeopleActivity sleep 3 Execute Adb Shell pm grant com.android.contacts android.permission.READ_CALENDAR Execute Adb Shell pm grant com.android.contacts android.permission.ACCESS_FINE_LOCATION Execute Adb Shell pm grant com.android.contacts android.permission.READ_SMS sleep 2 Click element id=com.android.contacts:id/floating_action_button sleep 2 Click element id=com.android.contacts:id/left_button sleep 2 Input Text xpath=//*[@resource-id='com.android.contacts:id/editors']//android.widget.EditText[@text='姓名'] cuiyw sleep 2 Click element xpath=//android.widget.Spinner[@content-desc="電話"]/android.widget.TextView sleep 1 Click element xpath=/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.ListView/android.widget.CheckedTextView[2] sleep 1 Input Text xpath=//*[@resource-id='com.android.contacts:id/editors']//android.widget.EditText[@text='電話'] 18575533041 sleep 2 Input Text xpath=//*[@resource-id='com.android.contacts:id/editors']//android.widget.EditText[@text='電子郵件'] [email protected] sleep 2 Click element xpath=//android.widget.TextView[@content-desc="保存"] sleep 2
這裏在新增通訊錄時會請求權限信息,位置、日曆、短信3個權限,這裏我使用Execute Adb Shell關鍵字先給應用授權,避免了彈出授權框,如果把上面的三個Execute Adb Shell關鍵字行註釋就會彈出下面的窗口。
執行完上面的測試用例則會在通訊錄裏有新增的信息。