『與善仁』Appium基礎 — 15、使用Appium的第一個Demo

繁華似錦Fighting發表於2021-11-28

我們使用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。

如下圖所示:

image

最後我們來看一下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編號加入到開發者專案。

相關文章