我們使用Python語言作為測試指令碼的編寫語言。
執行指令碼前提:
-
Android模擬器或者手機是開機狀態。
-
使用確保電腦和Android裝置進行了連結。
也就是使用ADB命令
adb connect
連結裝置,或者通過
adb devices
命令能夠檢視到裝置。 -
開啟Appium服務。
在Python的開發IDE中(PyCharm)中編寫指令碼如下:
"""
1.學習目標
掌握appium啟動手機方法
2.操作步驟
1-說明:明確驅動物件(操作物件)
web自動化步驟:
1.指定啟動瀏覽器
2.輸入網址
3.繼續其他操作...
APP自動化步驟:
要先傳遞如下資訊:
系統名稱: Android IOS
系統版本: 版本號
裝置名稱: 通過adb devices命令獲取
APP包名: 開啟哪個APP
APP啟動名:進入APP哪個頁面
2-匯入appium中webdriver
3-新增啟動引數
裝置資訊
系統名稱: Android IOS
系統版本: 版本號
裝置名稱: adb devices
APP資訊
APP包名: 開啟哪個APP
APP啟動名:進入APP哪個頁面
4-啟動app
webdriver.Remote()
5-操作app
6-關閉app
3.需求
啟動Android模擬器中的設定APP
"""
# 1.匯入appium
import time
from appium import webdriver
# 2.新增啟動引數
# 就是Desired capabilities,是一個字典型別的物件。
desired_caps = {
"platformName": "Android", # 系統名稱
"platformVersion": "7.1.2", # 系統版本
"deviceName": "127.0.0.1:21503", # 裝置名稱
"appPackage": "com.android.settings", # APP包名
"appActivity": ".Settings" # APP啟動名
}
"""
說明:
deviceName :
cmd進入命令列終端
輸入adb connect 127.0.0.1:21503 連結逍遙模擬器
輸入adb devices 獲取裝置名稱
appPackage和appActivity獲取:
首先在虛擬機器中開啟設定
輸入命令adb shell dumpsys window windows | findstr mFocusedApp
在u0之後的就是包名和啟動名com.android.settings/.Settings
"""
"""
提示:
platformName欄位中Android和android大小寫都可以。
deviceName 欄位,在測試Android手機時,隨意寫都可以,比如123
因為deviceName欄位是針對IOS系統的,
對於Android系統,該欄位必須要有,但是內容可以隨意寫,且不能為空。
platformVersion 欄位寫兩位也可以,能夠執行。
"""
# 3.啟動APP
# 宣告手機驅動物件(例項化webdriver)
# 第一個引數為appium服務的地址,需要啟動appium服務。
# 第二個引數為Desired capabilities物件
# 我們就先傳入這兩個引數就可以了。
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
# http://127.0.0.1:4723/wd/hub 中/wd/hub這個是固定的,必須有,要求的。
# 上面的一步就已經把app啟動起來了。
# 4.操作APP
# 先不對app做任何操作。
# 5.關閉APP
time.sleep(5)
driver.quit()
提示:
執行Appium程式碼注意事項:
1.保證裝置(手機)和電腦連線成功的。
就是使用adb connect
命令連結了裝置,或者adb devices
可以檢視到裝置名稱。
2.執行Appium Server(服務是啟動的)
3.執行測試程式碼即可。
注意:如果是第一次執行Appium指令碼,會在你的手機中安裝一個叫Appium Settings
的App。
如下圖所示:
最後我們來看一下Appium服務的日誌大概都說了些什麼內容,如下:
[Appium] Welcome to Appium v1.13.0
[Appium] Appium REST http interface listener started on 0.0.0.0:4723
# 一個session
[HTTP] --> POST /wd/hub/session
# 傳入Desired capabilities字典型別物件
[HTTP] {"capabilities":{"firstMatch":[{"platformName":"Android","appium:platformVersion":"7.1.2","appium:deviceName":"127.0.0.1:21503","appium:appPackage":"com.android.settings","appium:appActivity":".Settings"}]},"desiredCapabilities":{"platformName":"Android","platformVersion":"7.1.2","deviceName":"127.0.0.1:21503","appPackage":"com.android.settings","appActivity":".Settings"}}
# 啟動AppiumDriver,建立回話
[W3C] Calling AppiumDriver.createSession() with args:
...省略部分資訊...
# 然後啟動一些ADB命令
[ADB] Found 2 'build-tools' folders under 'F:\DevInstall\envs\android-sdk-windows' (newest first):
[ADB] F:/DevInstall/envs/android-sdk-windows/build-tools/29.0.3
...省略部分資訊...
[BaseDriver] Event 'newSessionStarted' logged at 1605778307025 (17:31:47 GMT+0800 (中國標準時間))
# 6d2f52a7-f71e-4842-98e9-22aff59a4b38 為sessionID
[W3C (6d2f52a7)] Cached the protocol value 'W3C' for the new session 6d2f52a7-f71e-4842-98e9-22aff59a4b38
...省略部分資訊...
[BaseDriver] Event 'quitSessionFinished' logged at 1605778313510 (17:31:53 GMT+0800 (中國標準時間))
[W3C (6d2f52a7)] Received response: null
[W3C (6d2f52a7)] But deleting session, so not returning
[W3C (6d2f52a7)] Responding to client with driver.deleteSession() result: null
[HTTP] <-- DELETE /wd/hub/session/6d2f52a7-f71e-4842-98e9-22aff59a4b38 200 1469 ms - 14
[HTTP]
提示:
- 安卓應用的字尾是
.apk
,是AndroidPackage
的縮寫。- iOS安裝包
.ipa
,安裝iOS測試版本,需要iOS開發將iPhone手機的UUID編號加入到開發者專案。