appium環境搭建
- 操作系統: Windows 10
- 被測平台: Android真機
- appium服務器: appium Desktop
- appium客戶端: python-client
- 測試的APP:小米計算器
安裝Android SDK
在安裝Android開發環境之前,需要先安裝JAVA的開發環境!
Android SDK已經不再提供完整的獨立下載,需要通過Android Studio安裝:
Android Studio下載地址:https://developer.android.google.cn/studio
這里以windows版本為例,下載好了打開安裝程序,記得勾選Android Virtual Device,然后選擇安裝路徑並安裝
首次啟動Android Studio會彈出提示框,如圖所示:

提示Android Studio沒有檢查到Android SDK,因為我們沒有單獨安裝和配置Android SDK,所以單擊“Cancel”按鈕,繼續安裝。
勾選【Android SDK】 和【Android SDK Platform】選項,並通過【Android SDK Location】選擇SDK的安裝路徑。
之后點擊【Finish】開始下載安裝SDK,整個過程比較漫長,需要等待一段時間。
安裝完成后,就可以創建Android項目,因為用真機,所以在這就不講模擬器的設置了。
配置Android 環境變量
在我的電腦右鍵菜單中選擇【屬性】→【高級系統設置】→【高級】→【環境變量】→【系統變量】下的【新建】按鈕,添加ANDROID_HOME:
變量名: ANDROID_HOME
變量值: D:\Android\SDK # SDK的安裝位置
單擊【path】變量名,點擊【編輯】按鈕,追加如下配置:
%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\tools
%ANDROID_HOME%\build-tools\29.0.3 # 后面的版本自己去目錄看下,不要照抄
配置完成后在命令行輸入命令adb,能正常執行就好了
安裝appium Desktop
appium為c/s架構,Server主要用來監聽我們的移動設備,接收Client(客戶端)發來的JSON請求,解析后驅動移動設備運行測試腳本。
Github下載地址:https://github.com/appium/appium-desktop
進入網站后,找到標題Download Appium Desktop下,點擊Release鏈接就可以看到各個版本的安裝包了。
下載完了后進行傻瓜式安裝就好了。
安裝python的appium測試庫
appium client支持多種編程語言,這里以python為例,通過pip命令安裝:
pip install Appium-Python-Client
至此自動化測試環境就完成了。
測試准備和編寫腳本
開發者模式
首先USB手機連接電腦,手機進入開發者模式(不同品牌手機操作方法不同),在開發者選項中開啟USB調試。
在windows命令行中使用adb devices 查看設備連接情況,在List of devices attached下能看到一個實例ID說明監聽成功:

此時windows命令行輸入adb install D:\com.miui.calculator.apk可以安裝小米計算器APP

注意APK的所在路徑和文件名
appium Desktop
打開appium客戶端,點擊【start server】啟動appium server:

菜單欄選擇【File】下的【New Session Window】進行配置:

如何獲取app的appPackage名和appActivity名?
打開windows命令行,輸入命令aapt dump badging D:/com.miui.calculator.apk可以獲取到,如下圖所示
JSON配置信息:
{
"platformName": "Android", # 測試的平台,安卓或者ios
"platformVersion": "10", # 系統版本,此處代表安卓10
"deviceName": "OnePlus 7 pro", # 設備名稱,填手機型號就行,隨便填也可
"app": "D:/com.miui.calculator.apk", # app的安裝包的位置
"appPackage": "com.miui.calculator", # app的包名
"appActivity": "com.miui.calculator.cal.CalculatorActivity" # app的activity名
}
簡單配置完成后,點擊右下角的【start session】
可以看到測試機打開了小米計算器
元素定位
如圖,可以看到進入小米計算器的APP畫面,並且出現了權限設置的問題。

這些權限按鈕什么的都是可以定位到的,現在在appium手機畫面預覽中點擊【同意】按鈕,右邊會出現元素的各種屬性。
可以看到id和xpath定位等,這個操作跟selenium定位一樣,優先使用id就好,沒有id就使用其他定位方式。
這時候在測試機上點擊【同意】按鈕,測試機進入了小米計算器,此時appium的畫面還沒有變,因為需要點擊上面的【refresh】按鈕來實時獲取手機的畫面,然后根據需求找出各個按鈕的定位就可以編寫測試腳本了。
編寫腳本
現在來寫一個簡單的腳本操作一下小米計算器,計算5×9=45是否正確:
from appium import webdriver
from time import sleep
# 配置信息,字典類型,直接復用上面的json就好
desired_caps = {
"platformName": "Android",
"platformVersion": "10",
"deviceName": "OnePlus 7 pro",
"app": "D:/com.miui.calculator.apk",
"appPackage": "com.miui.calculator",
"appActivity": "com.miui.calculator.cal.CalculatorActivity"
}
# 傳入appium server的host+path,還有配置信息
driver = webdriver.Remote(command_executor='http://localhost:4723/wd/hub',
desired_capabilities=desired_caps)
sleep(3)
# 同意讀取手機狀態和身份
driver.find_element_by_id('android:id/button1').click()
# 同意獲取電話權限
driver.find_element_by_id('com.android.permissioncontroller:id/permission_allow_button').click()
# 點擊5
driver.find_element_by_id('com.miui.calculator:id/btn_5_s').click()
# 點擊乘號
driver.find_element_by_id('com.miui.calculator:id/btn_mul_s').click()
# 點擊9
driver.find_element_by_id('com.miui.calculator:id/btn_9_s').click()
# 點擊等號
driver.find_element_by_id('com.miui.calculator:id/btn_equal_s').click()
# 判斷結果是否等於45
result = driver.find_element_by_id('com.miui.calculator:id/result').text
if result == '= 45':
print('正確')
else:
print('錯誤')
sleep(3)
# 退出測試
driver.quit()
運行腳本的效果:



