Sonic v1.3.0-beta 已经发布啦!恭喜 Sonic 获得霍格沃兹的赞助~
官网:https://sonic-cloud.gitee.io
恭喜 Sonic 喜提三个用户案例。自动化实践方案
上回说到,如何用 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 和清晰度,后面也会开放给用户自定义,目前是通过 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 更好~