Appium是一个自动化测试开源工具,支持iOS和android平台上的移动原生应用、移动Web应用和混合应用。Appium是一个跨平台工具,它允许测试人员使用同样的接口、基于不同的平台写自动化测试代码,大大增加了测试套件间代码的复用性。
- 移动原生应用:是指那些用iOS或者android sdk写的应用;
- 移动web应用:是指那些使用移动浏览器访问的应用,appium支持iOS的safari和android上的chrome;
- 混合应用:是指原生代码封装在网页视图(原生代码和web内容交互)。
- 无需为了自动化,而重新编译或者修改我们的应用;
- 不必局限于某种语言或者框架来写和运行测试脚本;
- 一个移动自动化的框架不应该在接口上重复造轮子;
- 无论精神上,还是名义上,都必须要开源。
Appium的真正的工作引擎是第三方自动化框架,不需要在本身应用里植入appium特定或者第三方代码。
iOS:苹果的UI Automator框架
Android 4.2+:Google的UI Automator框架
Android 2.3+:Google的UI Instrumentation框架
Appium把这些第三方框架封装成一套API,即WebDriver API。
Appium扩充了WebDriver的协议,在原有的基础上添加自动化相关的API方法。
C/S架构
1. Appium的核心是一个Web服务器,它提供了一套REST的接口。它接收到客户端的连接、监听的命令,接着在移动设备上执行这些命令,然后将执行的结果放在HTTP响应中返还给客户端。
2. Session
自动化总是在一个session的上下文中运行,客户端初始化一个和服务端交互的session。客户端发送一个附有desired capabilities的JSON对象参数的POST请求“/session”给服务器,服务端就会开始一个自动话的session,然后返回一个session ID,客户端拿到这个ID后就用这个ID发送后续的命令。
3. Desired Capabilities
Desired Capabilities是一些键值对。客户端将这些键值对发给服务端,告诉服务端我们想要启动怎样的自动化session。
4. Appium server
Appium server是用nodejs写的,我们可以源码编译或者从NPM直接安装。
5. Appium服务端
Appium服务端有很多语言库Java,Ruby,Python,PHP,JavaScript,C#等,这些库实现了对WebDriver协议的扩展。使用Appium的时候,只需使用这些库代替常规的WebDriver库就可以了。
6. Appium.app,Appium.exe
Appium提供了GUI封装的Appium server下载,它封装了运行Appium server的所有依赖元素。而且这个封装包含了一个Inspector工具,可以让使用者检查应用的界面元素层级。