跨平台、开源、多设备多系统的支持,而且文档详细,还有中文版本,实在是业界良心。
关于Appium的介绍,官方的文档已经说得很清楚了,我这儿大致提炼一下几个重要的点。
1.无需为了自动化,而重新编译或者修改你的应用
在iOS上,这个特性是显然的。前面也说道了,因为Apple提供了Accessibility特性,让你可以得到控件响应的id,frame等。还可以通过代理,从而得到树形层级结构。
2.跨平台
这主要归功于Appium的自动化统一接口WebDriver API.WebDriver(也就是 "Selenium WebDriver")。我们使用这套统一的接口,在各自平台上去解释,得到不同的底层实现。比如iOS这边是UIAutomation和UITest,Android则是UiAutomator和Instrumentation。
3.多种语言编写&执行测试脚本
这得益于Appium的C/S架构,我们将编写执行脚本的部分称为客户端(Clinet),脚本内容遵循统一接口。每一行,其实就是Client向服务器去发送一条Http消息,然后Server解析并翻译成对应平台(iOS/Adr)的实际测试命令,再发送给Device,再执行。可以通过下面的示意图简单了解。
因为Server层的存在,和统一接口的隔离,实现了脚本实现和执行条件的多样性。现已知的就支持Java、Python、js、Ruby等方式的Client API。
同样,官方文档的快速开始也给出了详尽的步骤。但是实际上我在MAC上安装Appium的时候,还是遇到了各种各样的坑。这个指南部分,希望能帮助大家趟过这些坑。
0.下载图形化桌面应用 Appium App
目前更新到1.5,不支持Xcode8 和UITest。如果还在使用Xcode 7系列的版本可以直接下载使用。
1.安装 homebrew & node 如果接触过web前端的同学应该不会陌生。
2.node安装appium
npm install -g appium
到这里需要挂代理翻墙。如果没有条件的话,可以使用淘宝的NPM 镜像。
安装到一半,应该会遇到/usr/local
目录权限问题。这里给个小提示,建议给/usr/local/lib/node_modules/appium
开全权限sudo chmod -R 777 ./
,不建议使用sudo,据说会遇到别的问题。如果中途遇到错误,使用
npm uninstall -g appium
命令卸载,然后重装。如果卸载不了,就直接去Finder/usr/local/lib/node_modules/appium
目录删除就好了。
安装好之后,运行
$ appium &
命令就可以启动Appium的server了。
安装好了Appium server之后,可以开始运行第一个程序了。去官网下载示例代码。下载之后你能看到有一个apps的文件夹和examples文件夹,前者放的是示例程序,后面是不同语言客户端的测试脚本。打开 apps/TestApp
,运行能看到这是一个单页面的程序,最上方有两个输入框,输入数字,点击Compute Sum按钮,就能得出两者相加的和。
下面我们就来做这个部分的UI自动化测试。找一个自己熟悉的Client语言去执行自动化脚本,比如Java。打开,是一个Maven工程,下载了相应依赖库。之后打开SimpleTest文件,因为Xcode 8不支持UIAutomation框架,所以需要在setup中指定capability方式为XCUItest。
原文转自:http://www.jianshu.com/p/aae160cb9cc4