前言
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
- 可以直接使用 Agent 所有内置函数与变量。
- Groovy 引擎可以兼容 Java 语言,能与 Java 很好的结合,可以直接运行 Java 代码或者 Groovy 与 Java 混用。
- Groovy 语法简单,容易扩展,学习门槛低。
- 直接运行在 JVM 上,无需配置额外环境。
- 等等…
更多内容可以查看使用文档,我们先马上进入主题文章源自玩技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
- 先把 fastbot 需要的 jar 推送到手机上,准备好环境
- 使用自定义脚本功能
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
- 被测控件类型为游戏控件
- 对应游戏包已经接入 POCO-SDK。 👉POCO 官方接入指南
- 已经打开接入 SDK 的对应引擎页面。
- 注:接入 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 继续努力做得更好,希望大家能保持关注~
未知地区 5F
跑 fastbot 的报告分析最好也有哈
未知地区 4F
哇塞,老粉丝啊
未知地区 3F
哈哈哈来
未知地区 2F
太赞了,从 1.0 就开始使用的,支持 sonic
未知地区 1F
搞起来