什么?Sonic 2.0.0 版本还能这么玩?

random
random
订阅者
10532
文章
0
粉丝
测试交流5229字数 767阅读2分33秒阅读模式

前言

Sonic 开源一年多了,我们迎来了 2.0.0 版本。一路以来感谢各位 Sonic 用户的支持,开源不易。

除了前阵子介绍的 iOS 在线 webview 调试外、支持游戏 POCO 控件操作外,2.0.0 还有一个新功能就是运行自定义脚本。文章源自玩技e族-https://www.playezu.com/448570.html

自定义脚本使用文档
POCO 控件使用文档文章源自玩技e族-https://www.playezu.com/448570.html

自定义脚本

自定义脚本的诞生让 Sonic 自动化的自由度再增加了一个新的空间。文章源自玩技e族-https://www.playezu.com/448570.html

Sonic 支持使用 Groovy、Python 脚本,但是官方更加推荐使用 Groovy 脚本。原因如下:文章源自玩技e族-https://www.playezu.com/448570.html

  1. 可以直接使用 Agent 所有内置函数与变量。
  2. Groovy 引擎可以兼容 Java 语言,能与 Java 很好的结合,可以直接运行 Java 代码或者 Groovy 与 Java 混用。
  3. Groovy 语法简单,容易扩展,学习门槛低。
  4. 直接运行在 JVM 上,无需配置额外环境。
  5. 等等…

更多内容可以查看使用文档,我们先马上进入主题文章源自玩技e族-https://www.playezu.com/448570.html

应用场景

关于 fastbot

Fastbot 稳定性测试工具 Fastbot 是字节跳动的 QualityLab 团队开发的一款融合了机器学习与强化学习的基于模型测试的工具。文章源自玩技e族-https://www.playezu.com/448570.html

示例

那例如我们想在 Sonic 上跑 fastbot,要怎么使用呢?文章源自玩技e族-https://www.playezu.com/448570.html

  1. 先把 fastbot 需要的 jar 推送到手机上,准备好环境
  2. 使用自定义脚本功能
import org.cloud.sonic.agent.bridge.android.AndroidDeviceBridgeTool;
import org.cloud.sonic.agent.tests.LogUtil;
import org.cloud.sonic.agent.common.interfaces.StepType;
import com.android.ddmlib.IShellOutputReceiver;
import java.util.concurrent.TimeUnit;
def testFastbot(){
LogUtil log = androidStepHandler.log
androidStepHandler.getAndroidDriver().closeDriver()
androidStepHandler.iDevice.executeShellCommand("CLASSPATH=/sdcard/monkeyq.jar:/sdcard/framework.jar:/sdcard/fastbot-thirdpart.jar exec app_process /system/bin com.android.commands.monkey.Monkey -p package_name --agent reuseq --running-minutes duration(min) --throttle delay(ms) -v -v",
new IShellOutputReceiver() {
@Override
public void addOutput(byte[] bytes, int i, int i1) {
String res = new String(bytes, i, i1);
log.sendStepLog(StepType.INFO,"FastBot log",res)
}
@Override
public void flush() {
}
@Override
public boolean isCancelled() {
return false;
}
}, 0, TimeUnit.MILLISECONDS);
int port = AndroidDeviceBridgeTool.startUiaServer(androidStepHandler.iDevice);
androidStepHandler.startAndroidDriver(androidStepHandler.iDevice, port)
}
testFastbot()

这里有个坑,Sonic 安卓默认自动化框架是 UIAutomator2Server,但是底层与 fastbot 有冲突,所以两者同时启动时会有阻塞的情况出现,因此先临时 close 掉 uia2 服务,等 fastbot 执行完毕再开启,都在脚本里体现了。文章源自玩技e族-https://www.playezu.com/448570.html

POCO 控件遍历

2.0.0-beta 开始,支持游戏 POCO 控件了,当然您的游戏要先接入 POCO-SDK。
使用 POCO 相关步骤时,需确保:文章源自玩技e族-https://www.playezu.com/448570.html

  1. 被测控件类型为游戏控件
  2. 对应游戏包已经接入 POCO-SDK。 👉POCO 官方接入指南
  3. 已经打开接入 SDK 的对应引擎页面。
  4. 注:接入 POCO-SDK 时,如果有更改默认的 socket 启动端口,可以在【启动 PocoDriver】步骤中指定连接端口的值。
import org.cloud.sonic.agent.common.models.HandleDes;
import org.cloud.sonic.agent.tests.LogUtil;
import org.cloud.sonic.agent.common.interfaces.StepType;
def testPoco(){
LogUtil log =  androidStepHandler.log
HandleDes handleDes = new HandleDes()
log.sendStepLog(StepType.INFO,"Global",androidStepHandler.globalParams.getString("xxxx"))
androidStepHandler.startPocoDriver(handleDes,"UNITY_3D",5001)
for(int i=0;i<5;i++){
androidStepHandler
.pocoSwipe(handleDes,"Star"+[i],"poco("playDragAndDrop").child("star")["+i+"]",
"Shell","poco("shell")")
log.sendStepLog(StepType.INFO,"Poco Swipe","Move Done.")
}
androidStepHandler.closePocoDriver(handleDes)
}
testPoco()

效果图:文章源自玩技e族-https://www.playezu.com/448570.html

什么?Sonic 2.0.0 版本还能这么玩?插图

结语

Sonic 继续努力做得更好,希望大家能保持关注~

 
评论  5  访客  5
    • 恺
      9

      跑 fastbot 的报告分析最好也有哈

      • Eason
        Eason 9

        哇塞,老粉丝啊

        • Eason
          Eason 9

          哈哈哈来

          • 世间哪有真情在
            世间哪有真情在 9

            太赞了,从 1.0 就开始使用的,支持 sonic

            • tester1.0
              tester1.0 9

              搞起来

            匿名

            发表评论

            匿名网友
            :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
            确定

            拖动滑块以完成验证