Appium是一个可用于测试iOS、 Android操作系统和Windows桌面平台原生应用,移动网页应用和混合应用的自动化测试框架。
-
原生应用(Native App):用 android、iOS或者Windows SDK编写的应用
-
移动网页应用(Web App):通过手机浏览器访问的网页应用,比如iOS中 safari应用,Android上的Chrome应用或者内置浏览器应用,不会占用手机的存储空间。
-
混合应用(Hybrid App):同时具备Native App和Web App的特性,一种 webview应用,将Javascript,HTML和CSS执行在embedded webview中,外层用Native App wrapper包起來。
Appium 跨语言支持:Java、 Python、 Ruby、JavaScript (Node.js)、PHP、C# (.NET)、RobotFramework等,Appium是跨平台的,可以用在OSX,Windows以及Linux桌面系统上运行。
Appium架构
WebDriver
Selenium Webdriver API实现脚本语言与浏览器之间的通信,是一个远程控制接口,可参考Selenium Webdriver 架构。 Webdriver定义的JSON Wire Protocol(JSON有线协议)实现selenium客户端与remote server(浏览器驱动的HTTP服务器)的交互,remote server将命令发送给浏览器,实现浏览器的native调用。
WebDriver协议可参考官方文档:https://w3c.github.io/webdriver/
Appium WebDriver对Selenium Webdriver协议进行了扩展(Mobile JSON Wire Protocol),Appium 客户端通过Webdriver协议与Appium Server进行交互。
Appium引擎列表
为了不重新编译或修改应用,Appium 使用系统自带的自动化框架:
Android 4.3+
- UIAutomator
- UIAutomator2[推荐]
iOS
- UIAutomation (iOS ≤ 9.3)
- XCUITest[推荐] (iOS ≥ 9.3)
Windows:
- WinAppDriver
Appium的设计理念
Client/Server设计模式
Appium采用 C/S架构,Appium与客户端建立连接并监听命令,然后在移动设备上执行这些命令,命令执行结果通过 HTTP 响应的方式返回。客户端通过 WebDriver json wire协议与服务端通讯。由于Appium的这种特性,我们可以将Appium server放在与测试机不同的机器上。Appium Server是使用 Node.js 编写的HTTP服务。