(学一个东西,总的知道它支持什么。为什么要选择它吧?所以我就去看github上的介绍了。发现大家介绍的来源大多来自于此)
Appium是一个开源的自动化框架,是跨平台的,允许所有平台使用同一套API来编写脚本
一、支持的平台
ios
Android
FirefoxOS
支持native、web,hybride应用
Appium对iOS和Android的支持还是有一些区别的,比如下面的表
支持项 | ios | Android |
版本号 | 6.1、7.0、7.1 | Android2.3以上 |
支持设备 | iPhone和ipad模拟器及真机 | Android模拟器和真机 |
是否支持原生应用 | 支持 | 支持 |
是否支持内置移动浏览器 | 支持。真机需要安装ios-webkit-remote-debugger,且不支持Safari的原生界面 |
支持(除了使用Selendroid后台运行的情况)
chrome需要安装Chromedriver
|
是否支持同时在多个设备上进行自动化 | 不支持 | 支持,但是需要通过加参数开启另一个端口来实现。例如`--port`,`--bootstrap-port`(或者`--selendroid-port`)或者`--chromedriver-port`。 |
是否支持在同一个session中执行多个应用的自动化 | 不支持 | 支持(除了使用Selendroid后台运行的情况) |
是否支持第三方提供应用 | 只支持模拟器上少量的第三方应用 | 支持(但是不支持Selendroid后台运行的场景) |
是否支持自定义的、非标准UI控件的自动化 | 仅支持很少一部分 | 不支持 |
二、Appium的一些优点
1.不需要修改或编译app,使用各平台上标准的自动化API
2.支持多种脚本语言,下载个对应的client包即可。支持Java,Objective-C,JavaScript,PHP,Python,Ruby,C#,Clojure,Perl
3.开源自动化框架,所有平台使用同一套API
三、Appium的设计
Appium分为server和client端,实现UI自动化的过程实际上是client发送http请求到server,然后server将请求发送到手机。通过ios和Android自带的UI自动化工具进行操作,然后将结果回传给server,server再发给client。
Appium实际使用的自动化框架如下:
ios:ios的UIAutomation
Android 4.2+:Google的UIAutomator
Android 2.3+:Google的Instrumentation(实际由Selendroid支持)
说明:因为我也刚开始学习Appium,所以可能有理解不对的地方,希望大家可以指正
Android的过程可以参考下面这篇文章:
四、Appium的一些概念
Session
客户端初始化一个Session与服务端交互,不同的语言有不同的实现方式。但是都是通过发送一个post请求给服务端,请求中包含“desired capabilities”的JSON对象,这时服务端会开启一个Session并返回一个Session ID,Session ID将被用在后续的命令中
Desired Capabilities
desired capabilities是一个JSON对象,包含要测试的对象的具体信息,告诉服务端我们要怎么测试,具体的选项见下面链接
Appium.app,Appium.exe
提供了GUI封装的Appium服务端下载,封装了Appium需要的所有依赖,不需要安装Node.js,还包括了Inspector工具可以查看界面元素
概念参考文档: