Appium 自動化測試環境搭建


Appium 介紹

    Appium是一個開源工具,用於自動化IOS手機、Android手機和Windows 桌面平台上的原生、移動 Web 和混合應用。Appium 是跨平台的:它允許你用同樣的 API 對多平台(iOS、Android、Windows)寫測試。做到在 iOS、Android 和 Windows 測試套件之間復用程式碼。

Appium 的概念

客戶端 / 伺服器架構

 Appium的核心是一個公開REST API的Web伺服器。它接受來自客戶端的連接,監聽命令並在移動設備上執行,答覆 HTTP 響應來描述執行結果。

Session(會話)

 自動化始終在一個會話的上下文中執行,這些客戶端程式庫以各自的方式發起與伺服器的會話,但最終都會發給伺服器一個 POST /session 請求,請求中包含一個被稱作「Desired Capabilities」的 JSON 對象。此時,伺服器將啟動自動化會話並使用用於發送更多命令的會話 ID 進行響應。

Desired Capabilities

 Desired Capabilities 是一些發送給 Appium 伺服器的鍵值對集合(比如 map 或 hash),用於告訴伺服器我們想要啟動什麼類型的自動化會話。還有各種功能可以在自動化過程中修改伺服器的行為。

Appium Server

 Appium是用Node.js編寫的伺服器。它可以從源程式碼構建和安裝,也可以直接從NPM安裝

Appium Clients

 有一些客戶端程式庫(分別在 Java、Ruby、Python、PHP、JavaScript 和 C# 中實現),它們支援 Appium 對 WebDriver 協議的擴展。

Appium Desktop

 Appium Desktop是一款適用於Mac,Windows和Linux的應用程式,它以美觀而靈活的UI提供了Appium自動化伺服器的強大功能。它基本上是Appium伺服器的圖形介面。您可以設置選項,啟動/停止伺服器,查看日誌等…您也不需要使用Node/ NPM來安裝Appium,因為Node運行時與Appium Desktop捆綁在一起

 注意:Appium Desktop與Appium不是一回事。Appium Desktop是Appium的圖形前端,帶有其他工具。


相關環境安裝

  • 安裝JDK

  • 安裝 Android SDK   

          查看 Android SDK 安裝步驟

  • 安裝Appium Client 

           在pycharm中安裝Appium Client ,在命令窗口執行:pip install Appium-Python-Client

          如果報錯,查看具體步驟 [ //www.cnblogs.com/liho/p/16520+286.html ]

  • 安裝Appium 

  Appium可以通過以下兩種方式之一進行安裝:通過NPM或下載Appium Desktop,這是一種基於桌面的圖形化方式來啟動Appium伺服器。

          1、下載Appium Desktop

             地址找到對應的版本 [ //github.com/appium/appium-desktop/releases下載成功後點擊安裝,根據程式提示一致下一步安裝即可。

             

      


     2、啟動Appium伺服器 

(1)打開Appium Desktop,看到伺服器啟動窗口。基本選項是啟動具有所有默認值的Appium伺服器以及修改主機和埠的功能。start 按鈕知道正在運行的是哪個版本的Appium伺服器。

(2)啟動伺服器,點擊Start啟動伺服器,它將在指定的主機和埠上啟動,並打開一個顯示伺服器日誌輸出的新窗口


運行測試

使用 Appium 運行測試應用(測試設備:Android )

1、adb檢查是否連接設備

首先,必須確保adb連接了一個且只有一個Android模擬器或設備。檢查是否連接設備運行:adb devices

2、啟動Appium並配置選項

1、Appium啟動成功後,Appium右上角有三個選項分別為:Start inspector session 啟動檢查器會話、Get Raw Logs  獲得原生日誌、Stop Server  停止服務

2、點擊Start inspector session啟動檢查器,選擇 Automatic Server(自動化服務),填寫 Desired Capabilities

     Desired Capabilities是在 JSON 對象中編碼的鍵和值,在請求新的自動化會話時由 Appium 客戶端發送到伺服器,

每個Appium客戶端都以特定於客戶端語言的方式構建功能,但最終,它們會作為JSON對象發送給Appium。

 

以下為選項名稱及獲取方式:

(1)deviceName  : 設備名稱  ,獲取方式:通過adb devices獲取  127.0.0.1:62001

 

(2)platformName : 作業系統名稱   可填寫:Android和IOS

(3)appPackage : 測試APP的包名 獲取方式  可輸入:adb shell pm list packages -3 查看包名,測試包名:com.youdao.calculator

 

(4)appActivity  : activity程式主入口   com.youdao.calculator.activities.MainActivity

     獲取方式:adb logcat | findstr START     輸入該命令,同時點擊要啟動的app,即可獲取到包名和activity

 

 注意:Activity 的名字是指從你的包中所要啟動的 Android acticity。他通常需要再前面添加 . (例如 使用 .MainActivity 代替 MainActivity) 

配置成功後右側顯示對應的JSON對象。

 

3、點擊 Start Session 啟動會話 

 顯示測試APP的介面,可以定位元素

 

4、編寫測試腳本

確保已經安裝Appium Client ,編寫測試程式碼

"""
    @Time : 2022/7/22 17:03
    @Author :LH
    @desc :  測試自動啟動APP
"""
from appium import webdriver
# import time


desired_caps = { }
desired_caps['deviceName'] = '127.0.0.1:62001'  # 測試設備名稱
desired_caps['platformName'] = 'Android'  # 測試系統
desired_caps['plaformVersion'] = '7.1.2'  # 版本號
desired_caps['appPackage'] = 'com.youdao.calculator'  # app 包名
desired_caps['appActivity'] = '.activities.MainActivity'  # App最先啟動的Activity
# 打開APP,返回webdriver對象
# 連接APP server (需要先啟動appium server)
driver = webdriver.Remote('//localhost:4723/wd/hub', desired_caps)


print("啟動成功")

運行成功後,模擬器中自動啟動測試的APP

Appium Service 中顯示運行的日誌

環境搭建完成,測試成功,可以進行自動化測試。