开源测试工具 如何使用 Sonic 云测平台打王者?(下)-- iOS 支持

Eason for Sonic云真机系列 · 2022年01月04日 · 最后由 iOkra 回复于 2023年01月29日 · 2782 次阅读

前言

Sonic v1.3.0-beta 已经发布啦!恭喜 Sonic 获得霍格沃兹的赞助~
官网:https://sonic-cloud.gitee.io
恭喜 Sonic 喜提三个用户案例。自动化实践方案

iOS 支持

上回说到,如何用 Sonic 云真机打王者。
随着 iOS 远控的面世,我本着测试用户反馈的效果。获得的反馈基本是 iOS 的投屏清晰度高,FPS 能达到 30,但是触控延迟也比较高


这是因为跟安卓触控原理不一致。
iOS 的触控体验我是监听鼠标点击与松开完成一次滑动事件,才发送一个滑动指令给 Agent 执行,里面包含两次移动的坐标信息。
但是安卓的触控经过我调用 API 的方式,实时监听鼠标移动轨迹来发送指令给手机,所以触控体验会更佳、更流畅。
但是 iOS 的话,这种方式在 webdriveragent 里面很不好实现,目前也在探索之中

TouchAction ta = new TouchAction(iosStepHandler.getDriver());
String xy1 = msg.getString("pointA");
String xy2 = msg.getString("pointB");
int x1 = Integer.parseInt(xy1.substring(0, xy1.indexOf(",")));
int y1 = Integer.parseInt(xy1.substring(xy1.indexOf(",") + 1));
int x2 = Integer.parseInt(xy2.substring(0, xy2.indexOf(",")));
int y2 = Integer.parseInt(xy2.substring(xy2.indexOf(",") + 1));
ta.press(PointOption.point(x1, y1)).waitAction(WaitOptions.waitOptions(Duration.ofMillis(300))).moveTo(PointOption.point(x2, y2)).release().perform();

滑动触控有个坑,两个坐标滑动动作之间,要预留大约 300 毫秒的停顿,不然很容易造成滑动失效或者设备不动的情况。

控件获取

获取控件的话,原理便跟安卓的一致,将控件信息 dump 之后,获得的是 xml 格式,这时候使用 jsoup 一类的框架进行解析,然后自行转换成 json 渲染给前端。

调整 FPS 与清晰度

至于调整 FPS 和清晰度,后面也会开放给用户自定义,目前是通过 Appium Setting 对 wda 内置的 mjpegserver 做调整。

iosDriver.setSetting(Setting.MJPEG_SERVER_FRAMERATE, 30);

所以说,用 iOS 打王者,体验就没安卓那么好咯~

物理管控

在某些用户反馈,机器长时间插着 usb 充电容易造成鼓包等等安全问题,经过我一番研究后发现,改善这类问题只能从硬件级别入手,或搭配专门定制的 usbhub 来控制,但是这成本对于中小企业无疑是巨大的,因此在 v1.3.0 中,已加入电池温度监控,当温度过高时,我们的维护人员就要进行物理干涉啦!

电池温度的监控,主要使用 adb 的方式去获取
输入 adb shell dumpsys battery
我们获取的信息应该有以下几项

Current Battery Service state: 
AC powered: false 
USB powered: true 
Wireless powered: false
 Max charging current: 500000 
Max charging voltage: 5000000 
Charge counter: 4230000
status: 5 
health: 2
present: true 
level: 100 
scale: 100 
voltage: 4303 
temperature: 270 
technology: Li-ion 
mUsbStatus: 0 
PhoneTemp: 300

其中 temperature 字段就是我们需要的,单位是 0.1 摄氏度。

最后

Sonic 仍在继续努力~大家可以进群一起讨论,让 sonic 更好~

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

这速度可以啊!

hakaboom 回复

👏 快来体验一下

空了要赶快把 IOS 接入下了,业务也需要了。。。

牛皮 class。看看审核的速度咋样

aovenus 回复

😆 不过 iOS 这一块还需要细细打磨,体验还没有安卓那么流畅

兔子 回复

😀 审核速度感觉还可以

真棒 继续加油 👏

Eason #10 · 2022年01月05日 Author
cc 回复

😆

ios 接入可以用 tidevice 的方式麽?参考如下:
https://testerhome.com/topics/27758

应该整一波原神啊~hahahah~

我们希望 Sonic 能服务越来越多的中小企业
大企业也要 😀

Eason #14 · 2022年01月06日 Author
JKzhishui 回复

目前就是,不过后面可能弃用 tidevice

Eason #15 · 2022年01月06日 Author
剪烛 回复

😆 下次一定的

Eason #16 · 2022年01月06日 Author
CloudHuan 回复

😤 sonic 还需要长时间打磨,先不敢对标大企业哈哈哈,才刚开源三个月

Eason 回复

为什么要弃用 tidevices 呢?

Eason #18 · 2022年01月08日 Author
剪烛 回复

后续会一一解析对比

JKzhishui 回复

其实原理是一样的,都是要用到 WDA

对于自己使用 airtest 编写的脚本,是否也支持 run?

为啥 IOS 设备连接刚进去画面很清晰,过 2,3 秒就变模糊了 一个图片请求一直在加载,而且操作也有点卡顿 有什么好的方法么

Eason #22 · 2022年06月09日 Author
黄宇 回复

已经回复啦~

大佬,像安卓这样实时监听鼠标移动轨迹来发送指令给手机, iOS 这边有什么方法不?

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