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

Jerry li · January 22, 2018 · Last by 乱斗东 replied at January 02, 2019 · 2355 hits

安装

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 回复

好的,非常感谢

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up