自动化工具 不想折腾 python 环境又想跨平台进行 iOS 自动化怎么办?不妨试试 sib~

Eason for Sonic云真机系列 · 2022年07月22日 · 最后由 Xovz 回复于 2024年04月18日 · 49106 次阅读
本帖已被设为精华帖!

前言

官网文档(下载、安装、文档):https://sonic-cloud.gitee.io/#/SIB
用户社区(提 bug、需求): https://sonic-cloud.wiki/
Github: https://github.com/SonicCloudOrg/sonic-ios-bridge

sib 介绍

sib 是以 gidevice 为底层实现的 iOS 调试工具,因为 go 语言特性,编译好的二进制文件可以直接运行,所以不需要额外配置 python 环境或者 go 环境,直接下载 3M 左右的包解压就可以使用啦!sonic 组织也在持续参与建设 gidevice。当前迭代了数月,到达了 1.1.2 版本,基础功能如下:

  1. 设备基础信息获取、设备监听
  2. App 安装卸载、启动终止
  3. 查看进程信息
  4. 启动 xctest 相关,如:启动 Wda、Fastbot_iOS
  5. 获取电池相关信息
  6. 重启关机
  7. 代理转发
  8. 崩溃信息收集
  9. 模拟定位与取消(部分 App 不生效)
  10. 屏幕旋转监听
  11. 系统日志获取
  12. 性能采集(Doing)
  13. 截图
  14. 文件管理

以上功能皆跨平台,即 Windows、Mac、Linux 都可以使用。

UI 自动化的应用(Appium)

以 Java 为例:
先用 sib 启动 wda(需要指定端口可以参考官网文档的参数)

sib run wda

然后在脚本里配置 Driver

DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
desiredCapabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, Platform.IOS);
desiredCapabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.IOS_XCUI_TEST);
desiredCapabilities.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, 3600);
desiredCapabilities.setCapability(IOSMobileCapabilityType.COMMAND_TIMEOUTS, 3600);
desiredCapabilities.setCapability(MobileCapabilityType.NO_RESET, true);
desiredCapabilities.setCapability(MobileCapabilityType.DEVICE_NAME, 【设备名称,也可以通过sib获取】);
desiredCapabilities.setCapability(MobileCapabilityType.UDID, udId);
desiredCapabilities.setCapability("wdaConnectionTimeout", 60000);
desiredCapabilities.setCapability(IOSMobileCapabilityType.WEB_DRIVER_AGENT_URL, "http://127.0.0.1:8100");
desiredCapabilities.setCapability("useXctestrunFile", false);
desiredCapabilities.setCapability(IOSMobileCapabilityType.SHOW_IOS_LOG, false);
desiredCapabilities.setCapability(IOSMobileCapabilityType.SHOW_XCODE_LOG, false);
desiredCapabilities.setCapability("skipLogCapture", true);
desiredCapabilities.setCapability(IOSMobileCapabilityType.USE_PREBUILT_WDA, false);

new IOSDriver("http://localhost:4723/wd/hub", desiredCapabilities);

即可启动。

在 Fastbot 应用

sib run xctest  -b bytedance.FastbotRunner.xxxxxxx.xctrunner -e BUNDLEID=com.xxxxxx.internalapp -e duration=1 -e throttle=500

注意,因为 wda 和 fastbot 部分底层是相同,所以同时启动 wda 和 fastbot 会阻塞哦

获取 App 图标

加上-i 参数即可获取 icon,格式为 base64

sib app list -i

前端渲染后效果如图

屏幕旋转监听

sib orientation

您会获得类似的输出

orientation: 1

结语

sib 还在持续更新中,正在挖掘无人触碰的领域,也欢迎有能力的小伙伴参与建设 ~
转载需标明出处~

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 16 条回复 时间 点赞

@Lihuazhang 申精大佬可以看看吗

陈恒捷 将本帖设为了精华贴 07月25日 07:25

@Eason 👍

性能采集这部分计划是实现哪些采集能力呢?

不行啊,运行后,mac 直接报安全错误什么的,没有用啊

debugtalk 回复

fps cpu network mem

Bruce 回复

你要去 mac 的【设置】-》【隐私设置】里面信任,这个是 mac 要单独配的

启动后报这个错,网上查资料也没有找到,请问楼主有对应的交流群吗?

sonic 有简单了解,还是不错的平台,没想到里面还有 sib

Eason #10 · 2022年08月05日 Author
Sladar 回复

win 需要安装 iTunes,可以看官网文章

Eason #11 · 2022年08月05日 Author
tangoliver 回复

sonic 周边生态还有很多呢,jenkins 插件,抓包工具等等,还有一些在开发😆

Eason #12 · 2022年08月05日 Author
Sladar 回复

可以在 Sonic 用户社区找到入群方式

问一下 airtest 的基于图形的自动化脚本什么时候可以在云真机上使用

Eason #14 · 2022年11月22日 Author
Diky 回复

早可以了

Eason 回复

怎么去执行,有没有教程引导之类的,如果写好的脚本截图是放在哪里

Eason 回复

Hi 大佬,Sonic 的用户社区怎么打不开呢?想入个群呢

大佬你好,如何在测试用例中解锁手机呢?兼容测试场景:手机黑屏、锁屏高亮需上滑屏幕、已经解锁
自定义脚本如何实现呢?自定义脚本语法在哪里可以系统化学习呢,谢谢🙏

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册