编写测试 (Ruby)
AppiumLib 和 AppiumLibCore(推荐)是 Ruby 中的官方 Appium 客户端库,可通过 gem 以 appium_lib 和 appium_lib_core 包名获取。 appium_lib_core 继承自 Selenium Ruby Binding,而 appium_lib 继承自 appium_lib_core,因此安装这些库包括 selenium 绑定。 如果您需要一个不太复杂的客户端解决方案,我们推荐 appium_lib_core
。 appium_lib
有一些核心没有的有用方法,但代价是更大的复杂性和可能在最新环境中不工作的历史方法。
作为第一步,让我们初始化一个 Gemfile 来管理依赖项:
然后,您可以如下添加 Appium Ruby Client 依赖项:
下面的测试代码示例使用 test-unit
模块,因此请运行:
一旦这些步骤完成,您的 Gemfile
文件应该包含:
appium_lib_core
是作为 Appium 客户端的主要部分。
appium_lib
有各种辅助方法,但驱动程序实例通常被设计为全局变量使用。 它可能导致处理实例的问题。
appium_lib_core
没有这样的全局变量。
此示例使用 appium_lib_core
和 test-unit
gem 模块。
在 appium_lib
中的测试代码应该类似。
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_find_apps
@driver.wait { |d| d.find_element :xpath, '//*[@text="Apps"]' }.click
end
end
Note
这份指南的范围不包括对 Ruby 客户端库或此处发生的一切进行完整说明,因此我们暂时不对代码本身进行详细解释。
- 您可能需要特别阅读 Appium [Capabilities](../guides/caps.md)。
- appium_lib_core GitHub 仓库中的 [功能测试代码](https://github.com/appium/ruby_lib_core/tree/master/test/functional) 应该有助于找到更多工作示例。
- 文档 [appium_lib_core](https://www.rubydoc.info/github/appium/ruby_lib_core) 和 [appium_lib](https://www.rubydoc.info/github/appium/ruby_lib) 也有助于找到可用方法。
Note
示例代码可从 [GitHub Appium 仓库](https://github.com/appium/appium/tree/master/packages/appium/sample-code/quickstarts/rb) 获取。
基本上,此代码执行以下操作:
- 定义一组"Capabilities"(参数)发送到 Appium 服务器,以便 Appium 知道您想要自动化什么。
- 在内置的 Android 设置应用上启动 Appium 会话。
- 查找"Apps"列表项并点击它。
- 暂停片刻纯粹为了视觉效果。
- 结束 Appium 会话。
就是这样! 让我们试试。 在运行测试之前,请确保在另一个终端会话中运行 Appium 服务器,否则您会收到无法连接的错误。 然后,您可以执行脚本:
如果一切顺利,您将看到设置应用打开并导航到"Apps"视图,然后应用再次关闭。
恭喜,您已经开始了 Appium 之旅! 继续阅读一些 后续步骤 以进行探索。