• 安卓服务器集群


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

    https://testerhome.com/topics/11588
    来自:atx-server
    linpengcheng · 2018年01月10日 · 最后由 codeskyblue 回复于 2020年05月01日 · 675 次阅读

    最近将公司的设备通过 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/

    mac 系统的话 可以直接用 brew 安装
    brew install go
    brew install rethinkdb

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

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

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

    $ cd go/src/github.com/openatx/atx-server        
    $ go build
    

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

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

    如果没有 就重新执行步骤 2 的命令下载相关依赖文件
    实在下载不下来的可以从 golang 的 gitlab 上手动下载相关的 zip 包 解压重命名为cryptonet、 sys后放到 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 --port 8000
    

    这样 打开浏览器,输入地址127.0.0.1:8000 或者本机的 ip 地址加端口号 172.16.120.20:8000
    就可以直接访问 atx-server 的地址了

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

    $ pip install  --pre --upgrade 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 脚本运行的效果:

     

    ATX QQ 交流群:499563266

    附言 1  ·  2018年05月29日
     
    • server 也起来了,init 也成功了 ,网络也能 ping 通的 ,但是网页上还是没有出现设备 看看启动 server 的电脑没有用装了什么杀毒软件 防火墙之类的 关了再试试看
    附言 2  ·  2018年05月29日
     
    • server 也起来了,init 也成功了 ,网络也能 ping 通的 ,但是网页上还是没有出现设备 看看启动 server 的电脑没有用装了什么杀毒软件 防火墙之类的 关了再试试看
    附言 3  ·  2018年05月29日
     
    • 为什么启动 atx-server 后 浏览器打不开
      看看你是不是在 atx-server 的文件夹下启动服务,需要cd go/src/github.com/openatx/atx-server/ 到 atx-server 目录下载执行./atx-server

    • 为什么手机 init 成功了之后,在 web 上没有出现设备?
      确保你的手机和你启动 atx-server 的电脑在同一个 wifi 下面,不在一个 wifi 下面,怎么可能连上呢?

    • 我的手机python -m uiautomator2 init报错,init 不成功
      把手机上安装过的 uiautomator 的 app 给删掉,之前 macaca、appium 安装的 uiautomator 的 app 也删了 。重新安装 uiautomator,重启手机。还是 init 失败,那就换台手机吧

    如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
     最佳回复
    对 明杰 #45 回复

    python -m uiautomator2 init 命令重构

    为了修复一下 init 数字开头的 serial 的设备出错的问题。init 这部分的代码使用 argparse 重构了一下。抛弃了原来的 google-fire 库
    新的用法可以通过--help 查看帮助
    python -m uiautomator2 init --help

    部分使用方法有所修改
    旧命令 python -m uiautomator2 init $IP
    新命令 python -m uiautomator2 init --server $IP
    指定设备 init 的时候方法不变python -m uiautomator2 init --serial $SERIAL

     

     
  • 相关阅读:
    XML 浏览器支持
    浏览器中的XML
    C/C++中判断某一文件或目录是否存在
    C/C++程序员必须熟练应用的开源项目 -- 转
    VC 中窗口的销毁
    sql proc触发异常处理回滚
    为Array 添加indexOf
    Js的两种post方式
    sql 针对多个id或名称的分割和组合
    sql 查看语句的性能
  • 原文地址:https://www.cnblogs.com/vip136510786/p/14428921.html
Copyright © 2020-2023  润新知