本文在完全参考官方使用指南的前提下,进行环境搭建、demo的运行以及自己项目的配置,测试脚本语言使用的是 Python。其实,认真按照 Macaca 官方指南进行环境配置,是不会出错的。
下面开始直奔主题,Macaca 的介绍再此不多赘述了,套用官方的一句话介绍就是遵从标准的多端自动化测试,大部分人关心的是如何搭建环境和如何使用。
⚠️ 要有足够的耐心,否则是会被逼疯的,这期间头发少了很多。
背景:Mac、Xcode10、iOS、Python
请先安装 Homebrew(一款常用的 MacOS 的包管理器),按照官网提示安装即可。
$ brew install node
过程是漫长的,耐心等待……
这一过程完全参照官方指南即可,没有什么可说的。
安装 usbmuxd 以便于通过 USB 通道测试 iOS 真机
$ brew install usbmuxd
安装 ideviceinstaller 用来给真机安装 App
$ brew install ideviceinstaller
应用中如含有 WebView,请安装 ios-webkit-debug-proxy
$ brew install ios-webkit-debug-proxy
安装 macaca-ios 驱动
# 本地安装
$ npm i macaca-ios --save-dev
# 全局安装(如果需要测试真机,最好安装有 TEAM_ID 的 macaca-ios,下面会讲)
$ npm i macaca-ios -g
关于 iOS 真机环境,需要明白两个概念:
Macaca 依赖 macaca-ios
,而 macaca-ios
依赖安装到真机的 XCTestWD
,所以要确保 Macaca 最终调用的 XCTestWD
是安装到真机上的 XCTestWD
。
iOS 真机上的 XCTestWD
需要签名( TEAM_ID
),且和被测试的 App 一样。
解释一下,就是如果你想测试,你的真机(模拟器也一样)上会先安装一个 XCTestWDUITest,但真机上 Test 的签名必须和你要测试的App签名一致。
手机(模拟器)上会有这么一个东西。
那么如何安装 XCTestWD
,其实安装 macaca-ios
时是可以自动配置 XCTestWD
的,而且官方也是推荐这种自动配置的。
自动配置 XCTestWD
就是在安装 macaca-ios
的过程中将 TEAM_ID
通过环境变量传入即可,XCTestWD
会自动使用该 TEAM_ID
(这一步真是坑死我了,卡在这一天,讲到 app-inspector 安装时会说)。
# 卸载之前安装的 macaca-ios
$ npm uninstall -g macaca-ios
# 安装有 TEAM_ID 的 macaca-ios
$ DEVELOPMENT_TEAM_ID=YOUR_TEAM_ID npm i macaca-ios -g
关于 TEAM_ID 如何获取
如果要手动配置 XCTestWD
可以自行参考官方使用指南。
笔者为 iOS 开发,所以没有过多关注 Android 环境的相关配置,你可以参考官方使用指南进行配置,笔者就参照官方使用指南进行配置,并且配置成功。
# 全局安装
$ npm i -g macaca-cli
通过 macaca doctor
可以检查环境是否配置成功。
$ macaca doctor
如下图所示则表示环境配置正常,如果有标红提示,则需要对应处理(如何处理请自行百度,你遇到的问题度娘上基本都可以找到)。
iOS 应用,请使用 Scheme 设置为 debug 的 .app 包。
如何获取 .app 包:
iphoneos 文件夹中的 .app 包用于真机测试,iphonesimulator 文件夹中的 .app 包用于模拟器测试。
Android 应用,请使用 .apk 格式的包。
app-inspector 是浏览器端的移动设备 UI 查看器,使用树状结构查看 UI 布局,自动生成 xpath。
# 直接安装
$ npm i app-inspector -g
# 也可以直接配置 TEAM_ID
$ DEVELOPMENT_TEAM_ID=YOUR_TEAM_ID npm i app-inspector -g
使用
$ app-inspector -u YOUR_DEVICE_UDID
就是这一步,出了一个问题,当时也没仔细看报错原因,卡在这一天,没有截图,大概说一下问题,每次运行就提示我 TEAM_ID
错误,可是明明是自动配置,但其实这种错误就是没有配置成功,只需要根据错误提示所给的路径,去到该路径下,打开 XCTestWD
项目,手动配置一下即可。
此处对如何写测试脚本,不过多讲解,主要是在初始配置上的一些问题做些解释。
iOS 系统,测试脚本中的一些初始配置,如果是真机,主要需要配置的就是 platformName、app(.app
包的路径)、udid。.app
包的路径一定要写对,而且真机和模拟器的包是不一样的。
# 起服务
$ macaca server --verbose
# 再打开一个终端,运行测试脚本
$ python3 tests/ios-test.py
官方网站
国内社区:
注:大部分问题在 Testerhome 可查到解决方案。