在这里要感谢@utopia 分享的工具,原文:https://testerhome.com/topics/8025
我 fork 之后地址:https://github.com/xiaoluosun/iosMonkey
安装后试运行了下非常棒,扩展了几个小功能,准备每天跑起来
具体的安装部署就不说了,请移步到原文
新增功能:
1.新增了模拟器支持
2.支持自定义运行时长
3.每一步自动保存截图,并标注事件发生的位置(红色的“这里这里”文字,但保存截图偶尔会失败,正在找原因)
亲测了 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(" ")[4];
String curbundleid = str.split("\\[")[0];
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();
}
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;
}
模拟器截图失败率挺高的,截图会保存成 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();
}
}
在截图上标注事件的位置,就是在事件发生的坐标加了文字水印 “这里这里”,代码不贴了,看截图
左上角,搜索的后面