iOS 系统UI自动化测试介绍(3)

发表于:2016-11-15来源:简书作者:孢子菌点击数: 标签:自动化测试
跨平台、开源、多设备多系统的支持,而且文档详细,还有 中文版本 ,实在是业界良心。 背景 关于Appium的介绍, 官方的文档 已经说得很清楚了,我这儿

跨平台、开源、多设备多系统的支持,而且文档详细,还有中文版本,实在是业界良心。

背景

关于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了。

Hello World!

安装好了Appium server之后,可以开始运行第一个程序了。去官网下载示例代码。下载之后你能看到有一个apps的文件夹和examples文件夹,前者放的是示例程序,后面是不同语言客户端的测试脚本。打开 apps/TestApp,运行能看到这是一个单页面的程序,最上方有两个输入框,输入数字,点击Compute Sum按钮,就能得出两者相加的和。


Paste_Image.png

下面我们就来做这个部分的UI自动化测试。找一个自己熟悉的Client语言去执行自动化脚本,比如Java。打开,是一个Maven工程,下载了相应依赖库。之后打开SimpleTest文件,因为Xcode 8不支持UIAutomation框架,所以需要在setup中指定capability方式为XCUItest。

原文转自:http://www.jianshu.com/p/aae160cb9cc4

...