统一回复

macaca 新版替换了 facebook 的 wda。我正常安装新版 macaca 套件之后,无需坐任何修改,这个项目还可以使用

安装新版 macaca 遇到不少问题

必须的步骤:升级 macOS 到 10.12.5 ,升级 Xcode 搭配 8.3.3,安装新版 carthage,安装 gradle

MACdeMacBook-Pro:XCTestWD MAC$ macaca doctor

  macaca-doctor version: 2.0.1


  Node.js checklist:

  node env: /usr/local/bin/node
  node version: v6.9.4

  iOS checklist:

  Xcode Command Line Tools is ready, version: 2347.
  xcodebuild version: 8.3.3
  iproxy[usbmuxd] is installed at: `/usr/local/bin/iproxy`
  ios_webkit_debug_proxy is installed at: `/usr/local/bin/ios_webkit_debug_proxy`
  carthage is installed, version: 0.23.0

  Android checklist:

  JAVA version is `1.8.0_40`
  JAVA_HOME is set to `/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home`
  ANDROID_HOME is set to `/Users/MAC/Library/Android/sdk`
  Platforms is set to `/Users/MAC/Library/Android/sdk/platforms/android-25`
  ADB tool is set to `/Users/MAC/Library/Android/sdk/platform-tools/adb`
  gradle is installed, version: 4.0

  Installed driver list:

  android: 2.0.23
  ios: 2.0.18

说明

苹果去掉了原有的测试框架改用 XCTest 之后,一直等大神放出原生的 iosmonkey。但是入侵式的方式可能开发不会接受。前几天发现一个项目是通过 macaca 实现的,尽管效率比起原生模式的 monkey 差很多,总比没有好。试用了几天,基本实现 monkey 的功能。能够模拟长时间操作 App 的场景,但是无法对 App 进行 Monkey 压力测试。

从 0 到 1 非常困难,从 1 到 2 就简单很多,项目是复制来的,修复了一些 bug,修改了一点逻辑。原版在https://github.com/hujiachun/iosMonkey

我改版的项目在https://github.com/baozhida/iosMonkey

现在客户端是使用同步的方式处理发送的事件,效率稍低

经实测:

iPhone 6plus 10.2.1,每分钟可以执行大约 40 次事件;

iPhone 7 10.2,每分钟可执行大约 60 次事件;

通过修改代码实现了异步 http 请求,发送事件的请求数量可以大幅提升,但是很多请求会阻塞,没有执行,实际效果不好,遂放弃。

更新

2017.3.17: 原版本呼起 app 的指令是当成事件,按照一定的频率执行,不管现在是否是在测试 APP 页面都会执行。现在改为守护进程的模式,只有当前页面跳出测试 APP 时候才会执行打开 APP 的指令。

2017.4.5:

1.修复 app 守护进程的 bug,由于时间问题导致的

2.增加返回 homescreen 的事件,事件概率是 2%,返回手机主页 5s 后重新打开 app

0、简介

1、功能

2、准备 macaca 环境

安装 usbmuxd

$ brew install usbmuxd

安装 ios-webkit-debug-proxy

$ brew install iso-webkit-debug-proxy

安装 ios-deploy

$ npm i ios-deploy -g

安装 ideviceinstaller

$ brew install ideviceinstaller

编译 libimobiledevice

libimobiledevice 需要自己编译,证实直接安装的不能用

https://github.com/libimobiledevice/libimobiledevice

下载到本地

Before building, try setting:

LD_LIBRARY_PATH=/usr/local/opt/openssl/lib:"${LD_LIBRARY_PATH}"
CPATH=/usr/local/opt/openssl/include:"${CPATH}"
PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig:"${PKG_CONFIG_PATH}"
export LD_LIBRARY_PATH CPATH PKG_CONFIG_PATH
You might want to add that to your .bash_profile.

CPATH and PKG_CONFIG_PATH are for compiling. LD_LIBRARY_PATH is for runtime. See also https://gist.github.com/samrocketman/70dff6ebb18004fc37dc5e33c259a0fc

Then to compile run:

./autogen.sh
make
sudo make install

安装 carthage

$ brew install carthage

安装 macacajs 包括,macaca-cli macaca-ios

npm install macaca-cli -g

npm install macaca-ios -g

MAC 全局安装的路径分别如下:

/usr/local/lib/node_modules/macaca-cli
/usr/local/lib/node_modules/macaca-ios

检测 macaca 环境,无报错

$ macaca doctor

3、WebDriverAgent 项目重签名

按照项目

https://github.com/baozhida/MacacaAutomation

操作项目重签名

4、帮助命令

如果需要多个 iOS 设备一起执行,需要指定 proxyport ,同时 macaca 使用不同的端口

$ java -jar iosMonkey-1.0.jar -h
-u:设备的UDID
-b:测试App的Bundle
-port:macaca服务的端口,默认3456
-proxyport:usb代理端口,默认8900

5、执行 iosMonkey

开一个窗口执行

$ macaca server --verbose

在一个新窗口执行

$ java -jar [iosMonkey.jar Path] -u [设备的 UDID] -b [测试 App 的 BundleID] -port [macaca 服务端口,可选] -proxyport[usb 代理端口,可选]

6、修改源码重新打包方法

如果需要源码实现自定义的功能,在项目目录下执行

$ mvn assembly:assembly

最后提示如下,标示打包成功,target 下生成 iosMonkey-1.0.jar,可以使用最新的包

INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.350 s
[INFO] Finished at: 2017-03-06T17:01:30+08:00
[INFO] Final Memory: 20M/324M
[INFO] ------------------------------------------------------------------------


↙↙↙阅读原文可查看相关链接,并与作者交流