草帽路飞UU 发表于 2017-6-21 09:49:12

IOS Monkey 扩展了几个小功能

新增功能:

1.新增了模拟器支持

2.支持自定义运行时长

3.每一步自动保存截图,并标注事件发生的位置(红色的“这里这里”文字,但保存截图偶尔会失败,正在找原因)
1. 支持模拟器

亲测了iOS10.3,其他版本未测试。。。。。。
if(UDID.contains("-")) {
    System.out.println("=======启动模拟器的app守护进程=======");
    String catLog = "tail -n 3 -f ~/Library/Logs/CoreSimulator/" + UDID + "/system.log";
    Process pp = Runtime.getRuntime().exec(catLog);
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(pp.getInputStream()));

    String line = bufferedReader.readLine();
      if(line.contains("testMacdeiMac")){
            String str = line.split(" ");
            String curbundleid = str.split("\\[");
            if(curbundleid.contains("LuoJiFM-IOS")) {

            } else if (curbundleid.contains("CoreSimulatorBridge")) {

            } else {
                System.out.println("==当前启动的APP bundleid是【"+curbundleid+"】,非测试APP,重新呼起测试APP====");
                Runtime.getRuntime().exec("xcrun simctl launch booted " + BUNDLEID);
            }
      }

    bufferedReader.close();

}2. 支持自定义运行时长
java -jar iosMonkey-1.0.jar -h
-u:设备的UDID
-t:运行时长(分),可选,默认180分钟
-b:测试App的Bundle
-port:macaca服务的端口,默认3456
-proxyport:usb代理端口,默认8900主要是在monkey运行的主方法和守护app的方法里做了限制
long startTime = System.currentTimeMillis();

.......

long endTime = System.currentTimeMillis();
if((endTime - startTime) > (Integer.parseInt(TIMING) * 60 * 1000)) {
    System.out.println("已运行" + (endTime - startTime)/60/1000 + "分钟,任务即将结束");
    break;
}3.每一步自动保存截图,并标注事件位置
模拟器截图失败率挺高的,截图会保存成0字节的文件,十次差不多要失败三四次,还没找到原因。
if(UDID.contains("-")) {
    try {
      // 模拟器截图
      Process pp = Runtime.getRuntime().exec("xcrun simctl io booted screenshot --type=jpeg " + screenshotPath);
      pp.waitFor();
    } catch (IOException e) {
      e.printStackTrace();
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
} else {
    try {
      // 真机截图(未测试)
      Runtime.getRuntime().exec("idevicescreenshot -u " + UDID + " " + screenshotPath);
    } catch (IOException e) {
      e.printStackTrace();
    }
}在截图上标注事件的位置,就是在事件发生的坐标加了文字水印“这里这里”,代码不贴了,看截图

左上角,搜索的后面
https://testerhome.com/uploads/photo/2017/36905220-8516-4f68-95e9-d3fe81f3b853.jpeg!large

八戒你干嘛 发表于 2017-6-21 12:36:10

我也学习下,支持最新版的macaca么,不少反馈新版报错,可能更新适配一下

悠悠小仙仙 发表于 2017-6-21 12:36:54

我昨天上午第一次安装的macaca,应该是最新版吧,我到公司看下版本
页: [1]
查看完整版本: IOS Monkey 扩展了几个小功能