Airtest Airtest Poco 的 Java 简单实现只用于演示原理

范顿顿 · 2023年07月02日 · 最后由 Melanie9826 回复于 2023年09月05日 · 4785 次阅读

整个 airtest 体系都是使用 python,这里使用 java 简单演示一下 poco 的原理,希望抛砖引玉后面有大佬搞出个完整的 poco airtest client
源码链接:https://github.com/1033866383/Poco-java-client 因为要工作空闲的时间并不多所以后续我会随缘慢慢继续增加更多的实现。

1.poco 本质上是一个嵌入到游戏中的 sdk agent,它用游戏相关或者 android/ios 相关的代码获取整个游戏/android/ios 的节点树,然后又提供了一个 server,如图:

2.经过第一步后此时手机是启动了有一个端口提供了 dump 页面元素的功能和其他功能。此时需要讲手机上 server 的端口映射到我们自己的电脑或者服务器上,这个时候 android 使用使用 adb forward 映射, ios 可以用 tidevice 的 relay, 或者 sib,idevice 都可以实现这个转发。当然这个转发还有一个基础: windows 的话需要下载 itunes ,linux 需要下载 usbmuxd 他们都是为了去提供 usb 通信到 tcp 服务端的转换。
3.此时 poco server 我们就可以通过本地端口去访问了。
这里是一个客户端发的 json,这个会获取页面所有的元素:{"method": "Dump", "params": [true], "jsonrpc": "2.0", "id": "5f38cf98-ec79-4634-8d0a-c85d36f55830"}
返回值也是 json,里面会包含 pos , name 以及其他的属性。
不过需要注意的是 客户端信息发送前需要封包,拆包。

在打通了第一步的前提下,后面其实我们可以做的事情很多,无论是根据 name 获取元素信息,还是点击固定元素都可以。
效果如图:可以看到所有的元素信息以及位置还有偏移情况。

可以看到这里有个 ” 创建账号 “ 的 text 我使用的是这个页面,所以已经找到了对应的位置:

最后就是之前做了 android/ios 客户端性能测试平台有兴趣的同学可以去使用下:
https://github.com/1033866383/perf-orange-cat

共收到 1 条回复 时间 点赞

hello~我们是一家做海外手游研发的公司,目前有在考虑游戏自动化测试开发的机会吗?如果有兴趣可以联系我 13269460868~

范顿顿 关闭了讨论 03月05日 13:04
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册