深入瞭解Appium:Capability 高級配置技巧解析

簡介

Appium 的除了基礎的 Capability 設置,還提供了許多輔助配置項,用於優化自動化測試。這些配置項旨在執行基礎配置之外的附加操作。例如:指定設備別名、設備 ID 或是設置超時時間等,雖然這些不是必需的選項,但是爲了實現更高效的測試,通常也建議依據測試的情況適當的添加。

xcuitest driver 的 capabilities 官方文檔介紹(UAutomator 可做參考)。

進階配置項

deviceName

deviceName 只是作爲設備的別名,並不能唯一的確定一個設備。

python 示例

caps["appium:deviceName"] = "emulator-5554"

udid

使用設備的 UDID 可以確保在同時連接多個設備時,準確地選擇指定的設備進行自動化測試。不設置 UDID 則默認讀取設備列表的第一個設備,當只連接一個設備,可以不設置。

  • 在 iOS 設備上,可以在設備的設置中找到 UDID 。
  • 在 Android 設備上,可以通過 adb 命令或在開發者選項中找到UDID。

獲取設備列表,使用 adb devices 命令:

如圖所示,下圖連接的設備的唯一標識就是127.0.0.1:7555

可以通過 capabilities 中的"udid"字段來指定設備的UDID。

python 示例

## 並不能唯一確定一個設備
caps["appium:deviceName"] = "emulator-5554"
## 可以唯一確定一個設備
caps["udid"] = "hogwarts001"

newCommandTimeout

appium 可以設置程序應等待來自客戶端的新命令的超時時間,超時後 session 會被刪除。具有 60s 的默認等待時間。將時間改爲 0 時,表示禁用該設置。

在 capabilities 中的"newCommandTimeout"字段來指定等待時長,單位爲秒。

python 示例

## 可以根據測試所需步驟適當延長時長。

caps["appium:newCommandTimeout"] = 3600

PRINT_PAGE_SOURCE_ON_FIND_FAILURE

  • 默認爲 false
  • 發生任何錯誤,強制服務器將實際的 XML 頁面源轉儲到日誌中.

測試策略-noReset

在 capabilities 中 noReset 如果爲真,指示應用程序驅動程序在會話啓動和清理期間避免其通常的重置邏輯(默認爲假)。

然而,在 Android 和 iOS 平臺上,noReset 被處理的方式有一些不同。

  1. Android 平臺:
  2. 當 noReset 設置爲 true 時,啓動應用程序時不會重置應用的狀態,包括清除緩存、重置應用程序設置等。這意味着應用程序在每次啓動時會保留上一次的狀態。
  3. 當 noReset 沒有設置或設置爲 false 時,啓動應用程序時會重置應用的狀態,包括清除緩存、重置應用程序設置等。這意味着應用程序在每次啓動時會恢復到初始狀態。
  4. iOS 平臺:
  5. 在 iOS 平臺上,無論 noReset 設置爲 true 還是 false ,應用程序的狀態通常會重置。這是因爲在 iOS 中,每次應用程序啓動時,Appium 會使用一個新的模擬器或設備,以及一個新的應用程序安裝。
  6. 若要實現在 iOS 平臺上不重置應用程序的狀態,可以通過保持模擬器或設備的狀態來實現。這可以通過使用 udid 參數指定具體的設備,以及安裝應用程序的方式來實現。

總結起來,noReset 在 Android 平臺上可以實現每次啓動應用程序時保留上一次的狀態,但在 iOS 平臺上,無論設置爲 true 還是 false ,應用程序的狀態通常會重置。在 iOS 平臺上保留應用程序狀態需要使用其他方法。

測試策略-shouldTerminateApp

指定應用程序是否應在會話結束時終止。默認值爲 true,除非 noReset 功能設置爲 true

測試策略-forceAppLaunch

指定如果應用程序已經在會話啓動時運行,是否應該強制重新啓動。默認值爲 true ,除非 noReset 設置爲 true。

總結

  • Capability 進階配置項
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章