『與善仁』Appium基礎 — 15、使用Appium的第一個Demo
- 2021 年 11 月 28 日
- 筆記
- 測試基礎必會技能 - Appium測試框架
我們使用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("//127.0.0.1:4723/wd/hub", desired_caps)
# //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]
提示:
- Android應用的後綴是
.apk
,是AndroidPackage
的縮寫。- iOS安裝包
.ipa
,安裝iOS測試版本,需要iOS開發將iPhone手機的UUID編號加入到開發者項目。