编写一个测试(Ruby)

AppiumLibAppiumLibCore推荐)是 Ruby 中的官方 Appium 客户端库, 它们可以通过 gem 在 appium_libappium_lib_core 包名称下获得。 appium_lib_core 继承自 Selenium Ruby,appium_lib 继承自 appium_lib_core,因此安装这些库时包括 Selenium 绑定。 如果您需要不太复杂的客户端解决方案,我们建议您使用appium_lib_coreappium_lib有一些appium_lib_core没有的有用方法, 但代价是更高的复杂性和历史方法,这些方法可能无法在最新环境中工作。

第一步,让我们初始化Gemfile来管理依赖项:

bundle init

然后,您可以添加Appium Ruby客户端依赖项,如下所示:

bundle add appium_lib_core
# 或
# 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有各种辅助方法,但驱动程序实例通常被设计为全局变量。 这可能会导致处理实例时出现问题。appiumlib_core中没有这样的全局变量。

这个例子使用了appium_lib_coretest-unitgem 模块。使用appium_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 = 'http://localhost: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 服务器,否则您将收到无法连接到该服务器的错误。然后,您可以执行脚本:

# 如果您的环境尚未运行安装命令,请首先运行“bundle install”。
bundle exec ruby test.rb

如果一切顺利,您会看到“设置”应用程序打开,并导航到“电池”视图,然后应用程序关闭。

恭喜,您已经开始了您的Appium之旅!请继续阅读,了解下一步要探索的内容。