ATX atx 安卓集群管理 安装运行及自动化的实践

cynic · 发布于 2018年01月10日 · 最后由 cynic 回复于 2018年01月16日 · 676 次阅读

最近将公司的设备通过stf进行了集中管理,有个问题就是所有的设备都要用数据线连接电脑,而且根据官网的说明 ,对usbHub的要求貌似还很高。
在半夜逛论坛的过程中发现@codeskyblue 的帖子:https://testerhome.com/topics/11546
根据https://github.com/openatx/atx-server
安装成功!
设备只要充着电就可以实现集群管理 ,美滋滋。。。

接下来 把安装的大致步骤记录下来供大家参考:

1、首先安装Golang go语言开发环境和rethinkdb:
安装Golang环境
下载地址:https://golang.org/dl/
安装说明:http://www.runoob.com/go/go-environment.html

安装好rethinkdb
https://rethinkdb.com/docs/install/

2、安装 atx-server
注意:可能需要翻墙才能安装成功

go get -v github.com/openatx/atx-server

3、build atx-server
Mac下的Gopath 为: /Users/test/go

$ cd $GOPATH/src/github.com/openatx/atx-server        #GOPATH=‘/Users/test/go’
$ go build

如果build报错,一般都是由于第二步go get的时候没有把相关的依赖全部下载完成导致的。

解决办法

检查 GOPATH/src/golang.org/x文件夹是否存在,在 x文件夹下是否存在以下三个文件夹cryptonetsys

如果没有 就重新执行步骤2 的命令下载相关依赖文件
实在下载不下来的可以从golang的gitlab上手动下载相关的zip包 解压重命名为cryptonetsys后放到 GOPATH/src/golang.org/x文件夹下
https://github.com/golang/net
https://github.com/golang/sys
https://github.com/golang/crypto

4、启动rethinkdb和atx-server

$ rethinkdb -http-port 8090     #指定端口启动rethinkdb

#启动atx-server
$ cd /Users/test/go/src/github.com/openatx/atx-server  
$ atx-server -addr :8000

5、安装uiautomator2 并将其装到手机上
电脑端pip install安装好uiautomator2之后,将安卓设备连接到电脑,确保adb devices 能够识别到设备
之后再执行第二行代码,将自动将uiautomator安装到手机上 并自动运行
其中init后面的IP地址为步骤4 启动atx-server的电脑的 ip:8000

$ pip install -U --pre uiautomator2        #安装uiautomator2 

$ python -m uiautomator2 init 172.16.120.20:8000        #将uiautomator安装到手机设备上

安装的log信息如下,可以看到设备的对应IP:

testdeMac-mini:~ test$ python -m uiautomator2 init 172.16.120.20:8000 
2018-01-10 15:11:33,546 - __main__.py:221 - INFO - atx-server addr 172.16.120.20:8000
2018-01-10 15:11:33,572 - __main__.py:236 - INFO - Device(0642f8d6f0ec9d1a) initialing ...
2018-01-10 15:11:33,818 - __main__.py:115 - INFO - install minicap
2018-01-10 15:11:33,925 - __main__.py:122 - INFO - install minitouch
2018-01-10 15:11:35,755 - __main__.py:143 - INFO - app-uiautomator.apk(1.0.6) installing ...
2018-01-10 15:12:04,397 - __main__.py:157 - INFO - atx-agent(0.1.4) already installed, skip
2018-01-10 15:12:06,255 - __main__.py:206 - INFO - atx-agent output: server started, listening on 192.168.2.4:7912
2018-01-10 15:12:06,256 - __main__.py:207 - INFO - success
2018-01-10 15:12:06,256 - __main__.py:236 - INFO - Device(5eb2b636) initialing ...
2018-01-10 15:12:06,516 - __main__.py:115 - INFO - install minicap
2018-01-10 15:12:06,688 - __main__.py:122 - INFO - install minitouch
2018-01-10 15:12:09,107 - __main__.py:143 - INFO - app-uiautomator.apk(1.0.6) installing ...
2018-01-10 15:12:17,802 - __main__.py:157 - INFO - atx-agent(0.1.4) already installed, skip
2018-01-10 15:12:19,329 - __main__.py:206 - INFO - atx-agent output: server started, listening on 192.168.2.3:7912
2018-01-10 15:12:19,329 - __main__.py:207 - INFO - success

6、全都就绪 ,打开浏览器访问就可以啦
http://localhost:8000/
http://172.16.120.20:8000/ #我电脑的局域网IP地址 别人电脑访问这个地址也能打开页面

################################################################################
自动化的demo实践:

在步骤5中可以看到Device(0642f8d6f0ec9d1a) nexus5 的ip是 192.168.2.4:7912
写了个简单的运行网易云音乐的demo脚本:

import uiautomator2 as ut2

def main():
    u = ut2.connect('192.168.2.4:7912')
    print(u.info)
    u.app_start('com.netease.cloudmusic')
    u(text='私人FM').click()
    u(description='转到上一层级').click()
    u(text='每日推荐').click()
    u(description='转到上一层级').click()
    u(text='歌单').click()
    u(description='转到上一层级').click()
    u(text='排行榜').click()
    u(description='转到上一层级').click()

if __name__ == '__main__':
    main()

打开http://localhost:8000/ 看看nexus5 脚本运行的效果:

################################################################################
发现了一个问题:
有时候点击眼睛打开操作页面后,需要手动将页面操作下,才能显示页码内容,不然一直是下图的状态

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

实践的挺快的嘛。最近有时间了,所以这个atx-server我估计还会加些别的功能,比如安装,看日志

14281
cynic · #2 · 2018年01月10日 作者
6853codeskyblue 回复

👍

7575

ss翻墙了,google能上了,就是下载不下来,好忧伤

4楼 已删除
14281
cynic · #5 · 2018年01月10日 作者
7575jphtmt 回复

我在App Store上随便找了个免费的vpn 开着就可以下成功了。
ss是不是不是全局翻墙的?

7575
14281cynic 回复

嗯,全局的,换了几个节点都不行,所以很郁闷

14281
cynic · #7 · 2018年01月10日 作者
7575jphtmt 回复

换个wifi试试看

605

好东西,最近打算基于这个看能不能搞定设备实时管理。资产登记的话用起来繁琐,容易信息滞后。

9楼 已删除
Dd68af

我昨天晚上折腾了好久SS也没拉下来,后来手动 go get github.com/golang/net拉下来,然后mkdir golang.org/x 再把拉下来的net目录移到olang.org/x目录搞定

14281
cynic · #11 · 2018年01月11日 作者
Dd68afmrkuxx 回复

曲线救国😁

6853 codeskyblue 安卓设备集群管理 atx-server 中提及了此贴 01月12日 09:27
Bd53ca
7575jphtmt 回复

我的是Windows,给命令行设置了下就可以
set http_proxy=http://127.0.0.1:1080
set https_proxy=http://127.0.0.1:1080

7575
Bd53caHongBo 回复

我VPN了……可以了

B3a59f

环境搭建起来了,和楼主一样精彩碰到最后一个问题。
另外,怎么远程控制安装app呢?

6853
B3a59fvic 回复

远程控制界面比较原始,你也看到了。不过可以用uiautomator2这个库执行安装,传递一个apk的url就可以了

B3a59f

@codeskyblue 相比较 STF可能做得更好些,不过远程连接这个 比有线连接方便多了

6853
B3a59fvic 回复

嗯,各有利弊

1975

@cynic 点击眼睛以后怎么操作页面呢,我怎么操作都不会显示内容

14281
cynic · #20 · 2018年01月14日 作者
1975woshizh 回复

没显示手机页面嘛?

1975
14281cynic 回复

是的,没有显示手机页面,我的是红米4

14281
cynic · #22 · 2018年01月14日 作者
1975woshizh 回复

换个手机看看

14281
cynic · #23 · 2018年01月16日 作者

在步骤3 下补充了在没有翻墙下 go get安装atx-server时 golang相关包无法下载手动解决办法

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