Appium简介

Appium介绍

Appium是一个开源工具,用于自动化测试iOS、Android、Windows等移动原生或移动Web混合应用。

重要的是,Appium是跨平台的:它允许你用同样多的API对多平台写测试,做到iOS、Android和Windows测试套件之间复用代码。

Appium的理念

Appium 旨在满足移动端自动化需求的理念,概述为以下四个原则:

  • 你没有必要为了自动化而重新编译你的应用或者以任何方式修改它。
  • 你不应该被限制在特定的语言或框架上来编写运行测试。
  • 移动端自动化框架在自动化接口方面不应该重造轮子。
  • 移动端自动化框架应该开源,不但在名义上而且在精神和实践上都要实至名归。

Appium的设计

那么 Appium 项目的架构如何实现这一理念呢?为了实现第一点要求,我们其实使用了系统自带的自动化框架。这样,我们不需要把 Appium 特定的或者第三方的代码编译进你的应用。这意味着你测试使用的应用与最终发布的应用并无二致。我们使用以下系统自带的自动化框架:

  • iOS 9.3 及以上:苹果的 XCUITest
  • iOS 9.3 及以下:苹果的 UIAutomation
  • Android 4.2+: 谷歌的 UiAutomator
  • Android 2.3+: 谷歌的 Instrumentation(通过绑定另外的项目—— Selendroid 提供 Instrumentation 的支持)
  • Windows: 微软的 WinAppDriver

Appium相关概念

客户端/服务端架构

Appium 的核心是暴露 REST API 的网络服务器。它接受来自客户端的连接,监听命令并在移动设备上执行,答复表示执行结果的 HTTP 响应。客户端/服务器架构实际给予了许多可能性:我们可以使用任何有 http 客户端 API 的语言编写我们的测试代码,不过选一个 Appium 客户端程序库 用更容易。我们可以把服务器放在另一台机器上,而不是执行测试的机器。我们可以编写测试代码,并依靠类似 Sauce Labs 的云服务接收和解释命令

会话(session)

自动化始终在一个会话的上下文中执行,这些客户端程序库以各自的方式发起与服务器的会话,但都以发给服务器一个 POST /session 请求结束,请求中包含一个被称作 'desired capabilities' 的 JSON 对象。这时服务器就会开启这个自动化会话,并返回一个用于发送后续命令的会话 ID。

Desired Capabilities

Desired capabilities 是一些发送给 Appium 服务器的键值对集合 (比如 map 或 hash),告诉服务器我们想要启动什么类型的自动化会话。也有各种可以在自动化运行时修改服务器行为的 capabilities。例如,我们可以把 platformName capability 设置为 iOS,告诉 Appium 我们想要 iOS 会话,而不是 Android 或者 Windows 会话。我们也可以设置 safariAllowPopups capability 为 true ,确保我们在 Safari 自动化会话中可以使用 javascript 打开新窗口。有关 Appium capabilities 的完整列表,请参阅 capabilities doc 。

Appium 服务器

Appium 是用 Node.js 写的服务器。它可以从源码构建安装或者从 NPM 直接安装:

$ npm install -g appium
$ appium
Appium 客户端

有多个客户端程序库(Java、Ruby、Python、PHP,、JavaScript 和 C# 的)支持 Appium 对 WebDriver 协议的扩展,你需要用这些客户端程序库代替通常的 WebDriver 客户端。在这里浏览所有程序库的列表。

原文链接

你可能感兴趣的:(Appium简介)