51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2952|回复: 2
打印 上一主题 下一主题

[转贴] IOS Monkey 扩展了几个小功能

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2017-6-22 09:58:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
说明在这里要感谢@utopia 分享的工具,原文:https://testerhome.com/topics/8025
我fork之后地址:https://github.com/xiaoluosun/iosMonkey
安装后试运行了下非常棒,扩展了几个小功能,准备每天跑起来
具体的安装部署就不说了,请移步到原文
新增功能:
1.新增了模拟器支持2.支持自定义运行时长3.每一步自动保存截图,并标注事件发生的位置(红色的“这里这里”文字,但保存截图偶尔会失败,正在找原因)1. 支持模拟器亲测了iOS10.3,其他版本未测试。。。。。。
  1. if(UDID.contains("-")) {
  2.     System.out.println("=======启动模拟器的app守护进程=======");
  3.     String catLog = "tail -n 3 -f ~/Library/Logs/CoreSimulator/" + UDID + "/system.log";
  4.     Process pp = Runtime.getRuntime().exec(catLog);
  5.     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(pp.getInputStream()));

  6.     String line = bufferedReader.readLine();
  7.         if(line.contains("testMacdeiMac")){
  8.             String str = line.split(" ")[4];
  9.             String curbundleid = str.split("\\[")[0];
  10.             if(curbundleid.contains("LuoJiFM-IOS")) {

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

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

  17.     bufferedReader.close();

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

  9. .......

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





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    无聊
    2024-7-12 13:16
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2017-6-22 10:06:52 | 只看该作者
    我也学习下,支持最新版的macaca么,不少反馈新版报错,可能更新适配一下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2017-6-22 10:07:32 | 只看该作者
    乐哈哈yoyo 发表于 2017-6-22 10:06
    我也学习下,支持最新版的macaca么,不少反馈新版报错,可能更新适配一下

    我昨天上午第一次安装的macaca,应该是最新版吧,我到公司看下版本
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-21 05:28 , Processed in 0.063204 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表