移动手机自动化测试
- 4.1 Appium 介绍
- 4.1.1 Appium 中的常用术语
- 1. Session
- 2. Desired Capabilities
- 3. Appium Server
- 4.1.2 Appium 服务关键字
- Appium 服务相关参数的说明
4.1 Appium 介绍
Appium 是一个开源、跨平台的自动化测试工具,可以用来测试 Native 及混合的移动端应用,Appium 可以支持 IOS、Android 及 FirefoxOS 平台
Appium 为了实现自身提出的理念:“不必局限于某种语言或者框架来写/运行测试脚本,以及一个移动自动化的框架不应该在接口上重复造轮子”,它把 IOS、Android 等自身提供的第三方框架都封装成了一套 API,即 WebDriver
API.WebDriver(SeleniumWebDriver,Appium 对此进行了扩展)指定了客户端到服务端的协议,通过这种客户端/服务端的架构可以使用任何语言来编写客户端向服务端发送恰当的 HTTP 请求,只要 client 能够发送 http 请求给 server,那么 client 用什么语言来实现都是可以的,这就是 appium 及 webdriver 如何做到支持多语言的
Appium 的核心是一个 Web 服务器,提供了一套 REST 的接口,它收到客户端的连接,监听到命令,接着在移动设备上执行这些命令,然后将执行结果放在 HTTP 响应中返还给客户端
Appium 官网
Appium 真正的工作引擎其实是第三方自动化框架:
- iOS:苹果的UIAutomation
- Android 4.2+:谷歌的UiAutomator
- Android 2.3+:谷歌的Instrumentation
- Instrumentation由单独的项目Selendroid提供支持。
4.1.1 Appium 中的常用术语
1. Session
Appium 自动化建立在一个 Session上 运行,客户端初始化一个 Session 来与服务端进行请求和交互,客户端会发送一个 POST 请求给服务端,请求中包含一个 JSON 对象,被称作 “desired Capabilities”,然后服务端就会开启一个自动化的 Session,并且返回一个 Session ID 给客户端,客户端的后续请求都会带上该 Session ID 给服务端做识别
2. Desired Capabilities
Desired Capabilities 是一些键值对的集合 (比如,一个 map 或者 hashmap),客户端将这些键值对发给服务端,告诉服务端需要怎么执行测试
比如,我们可以把 platformNamecapability 设置为 Android,告诉 Appium 服务端,我们想要一个 Android 的 Session,而不是一个 iOS 的;也可以设置 safariAllowPopupscapability 为 True,确保在 Safari 自动化 Session 中可以使用 JavaScript 来打开新窗口
3. Appium Server
Appium Server 是基于 Node.js 实现的,可以使用 NPM 直接安装
4.1.2 Appium 服务关键字