撰寫測試 (Ruby)

AppiumLibAppiumLibCore (推薦) 是 Ruby 中的官方 Appium 程式庫,可透過 appium_libappium_lib_core 套件名稱在 gem 中取得。appium_lib_core 繼承自 Selenium Ruby Binding,而 appium_lib 繼承自 appium_lib_core,因此安裝這些程式庫會包含 selenium binding。如果您需要較不複雜的用戶端解決方案,我們建議使用 appium_lib_coreappium_lib 有一些核心程式庫沒有的實用方法,但代價是複雜度較高,而且歷史方法可能無法在最新環境中運作。

第一步,讓我們初始化一個 Gemfile 來管理相依性

bundle init

然後,您可以如下新增 Appium Ruby Client 相依性

bundle add appium_lib_core
# or
# bundle add appium_lib

以下測試程式碼範例使用 test-unit 模組,因此請執行

bundle add test-unit

執行這些步驟後,您的 Gemfile 檔案應包含

Gemfile
source 'https://rubygems.org'

gem 'appium_lib_core'
gem 'test-unit'

appium_lib_core 是作為 Appium 用戶端的主要部分。appium_lib 有各種輔助方法,但驅動程式實例通常設計為用作全域變數。這可能會導致處理實例的問題。appium_lib_core 沒有這樣的全域變數。

這個範例是使用 test-unit gem 模組的 appium_lib_coreappium_lib 中的測試程式碼應該類似。

test.rb
require 'appium_lib_core'
require 'test/unit'

CAPABILITIES = {
  platformName: 'Android',
  automationName: 'uiautomator2',
  deviceName: 'Android',
  appPackage: 'com.android.settings',
  appActivity: '.Settings',
  language: 'en',
  locale: 'US'
}

SERVER_URL = 'https://#:4723'

class AppiumTest < Test::Unit::TestCase
  def setup
    @core = ::Appium::Core.for capabilities: CAPABILITIES
    @driver = @core.start_driver server_url: SERVER_URL
  end

  def teardown
    @driver&.quit
  end

  def test_version
    @driver.wait { |d| d.find_element :xpath, '//*[@text="Battery"]' }.click
  end
end

注意

本指南的範圍不包括提供 Ruby 用戶端程式庫或此處發生所有事情的完整說明,因此我們現在不會詳細說明程式碼本身。

注意

範例程式碼可從 GitHub Appium 儲存庫 取得。

基本上,此程式碼執行下列動作

  1. 定義一組要傳送給 Appium 伺服器的「功能」(參數),讓 Appium 知道您要自動化哪種類型的項目。
  2. 在內建的 Android 設定應用程式上啟動 Appium 會話。
  3. 尋找「電池」清單項目並按一下。
  4. 暫停一下,純粹為了視覺效果。
  5. 結束 Appium 會話。

就是這樣!我們來試試看。在執行測試之前,請確定您在另一個終端機階段執行 Appium 伺服器,否則您會收到無法連線的錯誤訊息。然後,您可以執行指令碼

# Please run "bundle install" first if your environment has not run the installation command yet.
bundle exec ruby test.rb

如果一切順利,您會看到設定應用程式開啟並導覽到「電池」檢視,然後應用程式會再關閉。

恭喜您,您已經開始您的 Appium 之旅!請繼續閱讀,以探索一些後續步驟