ATX自动化测试框架-iOS

要用到的两大框架

ATX: AutomatorX简称,本文主要讨论的iOS自动化测试的框架 WDA: WebDriverAgent的简称,是Facebook为苹果开发的一个自动化测试框架 优点(对比Appium) 引用作者原话:

1. ATX依赖比较少,安装快,上手也快
2. 可以测试第三方应用,比如微信,网易新闻之类
3. 更新方便,可以使用pip直接更新应用
4. 集成图像识别,可以解决仅靠UI无法定位识别的问题
5. 集成测试报告
6. 由知名企业网易的游戏测试开发团队开发(其实就是我们开发的),可以比appium更及时的响应需求,还可以用中文交流和沟通。

WebDeiverAgent

使用ATX之前要先安装WebDeiverAgent(以下简称WDA). 其实也很简单:

1. 到github上面把包下了
2. 进工程的根目录,运行./Scripts/bootstrap.sh下载依赖库(要用到Carthage和npm)
3. 打开工程文件WebDriverAgent.xcodeproj
4. Scheme选择WebDriverAgentRunner
5. 设备选择模拟器或者iPhone都可以
6. command + u

WDA还可以通过命令行启动:

1

xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination "id=$(idevice_id -l)" test

1

xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'platform=iOS Simulator,name=iPhone 6' test

——WDA据说是Facebook的开发人员,因为Linux下没有iTunes可以用,所以破解了iTunes和iPhone之间的通信协议,以此获取当前的屏幕的元素树.—— 上面的操作完成后,Xcode控制台会输出如下log:

我们就可以通过ServerURLHere->后面的连接去监听设备了,WDA里面有一个js脚本,建立一个inspector的页面,供我们方便查看元素:

中间视图显示的树,就是我们可以使用xpath来查找元素的基础了.

AutomatorX

安装

ATX其实是一个纯Python库,可以直接通过pip安装,但是要先安装opencv:

1

brew install python pillow opencv

安装开发版的ATX:

1

pip install --upgrade --pre atx

看到这行就安心了…… PS:最后要说的是输入法,测试之前需要将输入法却换到系统默认的英文输入法。某狗输入法是不可以的。

测试脚本

bundle_id

首先要知道应用的bundle_id, 有两种方法: 连接手机,终端使用命令 ideviceinstaller -l 查看当前手机所有已安装的应用:

通过Xcode 查看, 在美聊实验的时候,才知道,美聊Xcode编译出来的,测试版本的,线上版本的,bundle_id全是不同的…….

然后可以写第一个脚本了:

12345

# coding: utf-8 import atxd = atx.connect('http://localhost:8100')d.start_app('com.netease.idate4dt')print d.status()

这里我们把DEVICE_URL写成了localhost:8100,如果是真机的话,需要根据实际情况改成对应的手机IP和Port. 这是我之前写的一个demo:

打开应用 点击登录 输入帐号 输入密码 点击登录 点击个人 进入设置 退出登录

说明: 尽量使用xpath语法 因为美聊会保存账户,所以输入帐号之前先清除textField的内容 倒数第3,4行多了一个scroll() 它的功能是滑动屏幕使其按钮可见

测试过程报告

因为ATX集成了测试报告,所以生成响应的测试报告也很简单 在第3行代码之后加入以下代码

123

from atx.ext.report import Reportrp = Report(d)rp.patch_wda()

再次运行一遍代码,在当前脚本所在目录下就可以看到一个report目录,里面有一个image目录,里面是每一步的截图

ATX GUI(基于Python的截图软件)

因为一般游戏的测试会用到图片识别多一点,所以用了一个我自己玩的游戏做例子:

ATX的图片识别,是支持分辨率缩放匹配的,前提就是,在保存截图的时候要注明是在哪个分辨率下面截的图,命名方式如下:

原理大概就是:从文件名获取源分辨率,从设备获取设备分辨率,然后将图片按照比例缩放

问题

  • 真机有可能会在第6步的时候遇到Test Failed的错误,点我
  • 如果Xcode直接显示Test Succeed,请重启手机和Xcode
  • 如果之前有安装刚过numpy这个库的话,安装或者更新ATX的时候会报下面的错误:

因为numpy的版本冲突,但是os x10.10之后, 对系统文件夹有SIP保护,所以没有办法对特定的系统文件夹进行修改,解决方法

  • 在升级iOS10之后, 坐标系貌似有所改变, 原来的(x, y)变成了(width - y, x)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微信小开发

小程序界面设计指南

“上一期文章讲了小程序平台的特点以及场景需求,这一期文章主讲小程序设计规范,这是我通过阅读官方文档后归纳总结的,需要详细了解的小伙伴可以去看官方设计指南,文末有...

77470
来自专栏微信小程序开发

微信小程序开发应该注意的问题

小程序是微信主推的产品,现在也有不少公司的产品已经开发了小程序版本。那么,开发小程序你需要了解哪些知识? 1、使用微信web开发者工具 此工具是微信官方提供的小...

30980
来自专栏林德熙的博客

win10 uwp 装机必备应用 含源代码

zhxilin大神在文章说到了使用await Windows.System.Launcher.LaunchUriAsync(new Uri(uri));打开应用...

15320
来自专栏web前端教室

本周先行者课程--多级下拉菜单回顾

各位同学们大家好,又到周末了。这个周末咱们开始讲新的前端组件,多级下拉菜单。这个东西我们以前讲过一次,但因为感觉之前讲的有些不太充分,还是把它再拿出来讲一下。 ...

28480
来自专栏Debian社区

Debian下安装搜狗拼音输入法

2013年12月,搜狗与Ubuntu Kylin团队开始合作开发“搜狗输入法Linux版”。经过五个月的合作,于2014年4月17日,正式发布了1.0版本。20...

34530
来自专栏有趣的Python和你

Python爬虫之阳光电影爬虫爬虫分析代码

19550
来自专栏糊一笑

微信小程序初探【类微信UI聊天简单实现】

微信小程序最近很火,火到什么程度,只要你一打开微信,就是它的身影,几乎你用的各个APP都可以在微信中找到它的复制版,另外官方自带的跳一跳更是将它推到了空前至高的...

64150
来自专栏编程

利用好这些代码把SEO优化做到极致,最后一个你肯定没用

SEO 本期主题,利用好HTML代码让网站优化更上一层楼, 很多人认为网站优化和代码没有什么关系,其实不然,代码和优化也有着千丝万缕的关系。如果代码这一步不弄好...

219100
来自专栏程序员的诗和远方

React Native 实现二维码扫描

最近刚好在学习 React Native 想搞个扫描条形码,二维码的小应用,因为涉及硬件接口,而且自己本身并没有原生开发背景,踩了几个坑,记录一下。 扫描...

69980
来自专栏移动开发之家

从Android到React Native开发(一、入门)

大家好┏ (ω)=,许久不见,一不小心断更就成为了一种习惯,因为最近掉React Native的坑里,无法自拔啊~(╯‵□′)╯︵┻━┻。 关于React N...

10220

扫码关注云+社区

领取腾讯云代金券