1. 程式人生 > 其它 >appium--真機測試app

appium--真機測試app

1. appium設定

啟動appium,host和port預設即可,在Edit Configuration中將Android SDK和Java JDK加到環境變數中。

設定好後儲存並重啟Appium,然後啟動服務,出現以下畫面,說明你的appium server已經正常啟動了,可以開始真機測試了。

2. 真機測試

2.1 真機設定

USB連線手機,開啟手機開發者模式,開啟開發者選項中的USB除錯、USB安裝,小米手機還需要開啟USB除錯(安全設定),然後在CMD命令列輸入adb devices回車,如果出現了手機的裝置號,說明連線成功。

2.2 設定Appium

(1)點選Start Inspector Session對進行Desired Capabilities的配置,在JSON Representation中輸入以下json資料點選儲存進行快速的配置,也可以在左邊一項一項的新增。platformName、platformVersion、deviceName、appPackage、appActivity這五個引數是必填項

{
"platformName": "Android", # 宣告是ios還是Android系統
"platformVersion": "8.1.0", # Android核心版本號
"deviceName": "MI_5X", # 連線的裝置名稱
"appPackage": "com.tencent.qqmusic", # apk的包名
"appActivity": ".activity.AppStarterActivity", # apk的launcherActivity
"resetKeyboard": True,
"noReset": True # 在開始會話之前不要重置應用程式狀態
}

以上資料通過adb命令獲取,獲取appPackage與appActivity時需要將app啟動,獲取命令如下:

(2)配置好Desired Capabilities後,點選Start Session,app啟動執行之後可以在介面上點選選擇檢視當前頁面所有元素控制元件的詳細資訊,右側Selected Element下方有三個按鈕。

  • Tap:執行選中元素的點選操作
  • Send Keys:為文字框等input物件傳值
  • Clear:清除輸入框中的文字

2.3 編寫自動化指令碼

啟動session成功執行app之後,點選你想要操作的元素,在右邊可以看到這個元素的相關資訊,這裡我們可以通過id對該元素進行操作,在python中使用find_element_by_id()方法定位該元素,還有很多方法可以定位元素。

如:find_element_by_xpath()、driver.find_element_by_name()、driver.find_element_by_partial_link_text()等,使用click()方法對元素進行點選操作,使用swip()方法對螢幕進行滑動操作。

下面是python實現操作的原始碼展示,執行之後可以看到手機自動完成了啟動app、點選、滑動和退出的操作後,說明python指令碼執行成功。需要注意的是在完成上一步操作之後由於手機效能的差異,app的響應速度不同,建議等待幾秒後再進行下一步操作。

import time
from appium import webdriver


caps = {
"platformName": "Android", # 宣告是ios還是Android系統
"platformVersion": "8.1.0", # Android核心版本號
"deviceName": "MI_5X", # 連線的裝置名稱
"appPackage": "com.tencent.qqmusic", # apk的包名
"appActivity": ".activity.AppStarterActivity", # apk的launcherActivity
"resetKeyboard": True,
"noReset": True # 在開始會話之前不要重置應用程式狀態
}
driver = webdriver.Remote("http://localhost:4723/wd/hub", caps) # 啟動app
time.sleep(15)
el1 = driver.find_element_by_id("com.tencent.qqmusic:id/clt") # 定位<分類歌單>元素
el1.click() # 點選
time.sleep(5)
driver.swipe(500, 1550, 500, 800) # 從(500, 1500)滑動到(500, 800)
driver.quit() # 退出

3. 總結

Appium是目前比較成熟的自動化測試工具,使用了系統自帶的自動化框架,不需要把Appium特定的或者第三方的程式碼編譯進你的應用,這樣就可以使用正式釋出的包進行測試,不用擔心測試包與正式包存在區別。同時可以結合python已有的測試框架,例如:pytest、unittest,編寫測試用例,執行自動化測試。