『與善仁』Appium基礎 — 15、使用Appium的第一個Demo-編程思維

我們使用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編号加入到開發者項目。