前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ATX自动化测试框架-iOS

ATX自动化测试框架-iOS

作者头像
Locker
发布2018-08-01 17:41:14
3.1K0
发布2018-08-01 17:41:14
举报
文章被收录于专栏:221-B221-B

要用到的两大框架

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

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

WebDeiverAgent

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

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

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:

log
log

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

inspector
inspector

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

AutomatorX

安装

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

1

brew install python pillow opencv

安装开发版的ATX:

1

pip install --upgrade --pre atx

numpy2
numpy2

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

测试脚本
bundle_id

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

bundle_id
bundle_id

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

xcode
xcode

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

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:

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

script
script

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

测试过程报告

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

123

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

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

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

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

gui2
gui2

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

screenshot
screenshot

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

问题

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

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

  • 在升级iOS10之后, 坐标系貌似有所改变, 原来的(x, y)变成了(width - y, x)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-11-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 要用到的两大框架
  • WebDeiverAgent
  • AutomatorX
    • 安装
      • 测试脚本
        • bundle_id
      • 测试过程报告
        • ATX GUI(基于Python的截图软件)
        • 问题
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档