ATX atx 安卓集群管理 - 实践与扩展思路

Jerry li · 2018年01月22日 · 最后由 乱斗东 回复于 2019年01月02日 · 7771 次阅读

安装

https://testerhome.com/topics/11588

这篇帖子的安装步骤介绍很全,基本上照着一步步下来就 OK 了。
其中可能我用的梯子不给力, 直接下载不成功,手动逐个下载下来也成功了。

整理一下试用的一些扩展思路:

1. 屏幕解锁。

在运行测试脚本时,和 appium、macaca 一样遇到设备解锁的问题。由于几台测试机都已经跑过 macaca 框架,所以第一反应是用 macaca 的 unlock.app,果然成功了:
u.app_start('xdf.android_unlock')
time.sleep(1)
u.app_start(pkg_name='XXX.your.app', stop=True)

然后在一台 OPPO 测试机上遇到另一个问题:调用 unlock 后,还需要手动上划屏幕才能完成解锁。还好很快在另一篇帖子里找到解决方案:
https://testerhome.com/topics/11034
添加以下代码,模拟屏幕上划:
u.swipe_points([(0.509, 0.601),(0.503, 0.149)], 0.2)
time.sleep(1)

问题解决! 目前手头的几部测试机:OPPO、vivo、nexus 6P 、nexus 5X 、MI 6 都可以正常跑起来,赞!

2. 获取当前可用设备列表。

在 ATX server 自带的设备管理页面中,列出了当前可用的设备列表。于是尝试从这个页面的网络请求中获取设备列表,果然有收获:

从 list 这个请求中,通过 present 属性,获取当前可用的设备列表,就可以逐个调用进行测试了。

3. 截图和断言。

目前还没发现有现成的截图和断言方法,后续再研究。

感谢大神对 ATX 的开发支持!

共收到 10 条回复 时间 点赞

截图:
https://github.com/openatx/uiautomator2

Take screenshot

#take screenshot and save to local file "home.jpg", can not work until Android 4.2.
d.screenshot("home.jpg")
#get PIL.Image format, need install pillow first
image = d.screenshot()
image.save("home.jpg") # or home.png

#get opencv format, need install numpy and cv2
import cv2
image = d.screenshot(format='opencv')
cv2.imwrite('home.jpg', image)

对 linpengcheng 回复

之前在 api 里没发现有这个方法,感谢!

重新调整了下,现在应该不用 *** 了

刚那个解锁 'u.unlock() 也可以

对 codeskyblue 回复

好的,感谢

对 codeskyblue 回复

present 属性是设备是否在线的标志位吗,我按照这个帖子的方法获取了在线设备的 ip,昨天测试的三部手机,都曾经上过线,然后一部手机关机,一部掉线,一部·在线,但是这个标志位都为 True,然后测试代码跑起来自然连接不上其他两部不在线的手机,报拒绝访问的错误,这是 bug 吗

对 红客联盟 回复

我这边一直使用 present 属性, 还是比较稳定的,不清楚会不会是网络问题或者其他

楼主,这样只能管理 WiFi 连接的手机,直接 adb 线连接的设备看不到,是这样的吗?

对 乱斗东 回复

atx 应该就是用 wifi 管理的, adb 直连的可以看下 appium 相关的方案。
另外, adb 好像也支持无线连接的方式

对 Jerry li 回复

好的,非常感谢

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