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

linpengcheng · 2018年01月10日 · 最后由 codeskyblue 回复于 2018年12月15日 · 12507 次阅读

最近将公司的设备通过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文件夹下是否存在以下三个文件夹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 --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日
  • 为什么启动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失败,那就换台手机吧

附言 2  ·  2018年05月29日
  • server也起来了,init也成功了 ,网络也能ping通的 ,但是网页上还是没有出现设备 看看启动server的电脑没有用装了什么杀毒软件 防火墙之类的 关了再试试看
附言 3  ·  2018年05月29日
  • server也起来了,init也成功了 ,网络也能ping通的 ,但是网页上还是没有出现设备 看看启动server的电脑没有用装了什么杀毒软件 防火墙之类的 关了再试试看
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 144 条回复 时间 点赞

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

codeskyblue 回复

👍

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

4楼 已删除
adonisjph 回复

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

linpengcheng 回复

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

adonisjph 回复

换个wifi试试看

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

9楼 已删除

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

workhard 回复

曲线救国😁

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

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

啵板 回复

我VPN了……可以了

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

lin 回复

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

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

lin 回复

嗯,各有利弊

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

wuming 回复

没显示手机页面嘛?

linpengcheng 回复

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

wuming 回复

换个手机看看

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

能否将其和stf综合一下 哪位大侠写一把看看😁😁

—— 来自TesterHome官方 安卓客户端

rockyrock 回复

stf功能多而全,atx虽然没stf那么多功能,但是也够用。最主要的是,stf需要设备通过usb连接;atx只要手机有电,连着同一个Wi-Fi就行了。感觉比stf稳定,毕竟stf上有的设备会老掉线,且对usb hub的要求挺高的。

Jerry li atx 安卓集群管理 - 实践与扩展思路 中提及了此贴 01月22日 15:55

调整了一下 golang的vendor,现在编译应该不用翻墙了

在Windows折腾了很久才基本装完,在执行python -m uiautomator2 init 172.16.120.20:8000的时候报subprocess.CalledProcessError:command'adb -s xxx --list' returned non-zero exit status 1。 打算明天有时间在去看看源码是怎么样操作的。
这个问题已经解决了,是因为5037端口被占用了,然后安装成功后又有一个新问题,页面不显示设备?

afantishui 回复

后面的IP要用你启动服务的电脑的IP ,端口8000是步骤4 atx-server -addr :8000设定的端口号。
你ipconfig看一下你的电脑IP是多少

afantishui 回复

但是你的报错好像是没有找到安卓设备吧
adb devices 看看有没有识别到你的手机

linpengcheng 回复

这个问题已经解决了,是因为5037端口被占用了,
安装成功后打开localhost:8000没有显示连接的设备,但是打开RethinkDB(localhost:8090)可以看到连接了2个设备的(Tables 2 ready)
(这个也解决了,一开始是用公司WIFI,换成自己的手机热点就OK)

修改启动atx server启动命令为: atx-server --port 8000
https://github.com/openatx/atx-server/commit/b5c5478878039f849c95e7bcc0710c47ed50e6a4

33楼 已删除

控制设备打开的应用变成横屏的显示怎么解决

@cynic 楼主,你好;我这边访问网页,只有atx-server框架页面,没有显示手机信息,请问是哪里原因?

lb 回复

我是通过usb线和电脑连接的,是一定要通过wifi连接吗?

不错! 但是也有两个缺点:
1、手机依然需要开启usb调试
3、wifi不如用数据线连接速度快,设备多了很容易掉线

lb 回复

手机要执行第5步的操作,先连线设备执行python -m uiautomator2 init ATX_SERVER_IP 手机安装上一个apk应该可以了 然后手机wifi和启动服务的电脑的ip在同一个局域网

linpengcheng 回复

第5步执行成功了,手机上已经有uiautomator APK了,但访问网页,还是会没有手机相关信息;

lb 回复

ip是不是不对 ?

linpengcheng 回复

IP地址是对的,我换台手机试下;

linpengcheng 回复

换了台手机还是不行,请大神帮忙看下;
需要提供哪些日志信息;

lb 回复

换个网络看看 要么电脑共享个热点出来看看

lb 回复

init之后 手机是不是安装了个uiautomator的apk上去?

chunyong 回复

init完了之后,usb调试是可以关掉的

wuming 回复

今天在stf上连接红米手机遇到无法连上的问题 然后再开发者选项里的 允许模拟点击选项之后就好了 可能这也是一样的原因吧

你开启允许模拟点击再试试

linpengcheng 回复

恩恩,我已经成功了

最后的那个问题,atx-agent 0.2.1版本修复了

afantishui 回复

我在连接设备时也遇到这个问题:Command 'adb -s 127.0.0.1:62001 forward --list' returned non-zero exit status 1
但是查了端口,5037端口是adb.exe,请问还有可能是什么原因呢?

50楼 已删除


有遇到这个坑的朋友吗?

回复

少了个文件忘记提交,你 go get -u一下,重新更新下依赖

codeskyblue 回复

翻墙下载失败,不翻墙成功啦,谢谢楼主~

回复

可以可以

55楼 已删除
56楼 已删除

开发者选项里有个允许模拟点击 把它打开应该就好了

2018-05-11 14:55:15,896 - main.py:212 - INFO - launch atx-agent daemon
Traceback (most recent call last):
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\urllib3\connectionpool.py", line 387, in _make_request
six.raise_from(e, None)
File "", line 2, in raise_from
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\urllib3\connectionpool.py", line 383, in _make_request
httplib_response = conn.getresponse()
File "D:\Program Files (x86)\Python\Python36-32\lib\http\client.py", line 1331, in getresponse
response.begin()
File "D:\Program Files (x86)\Python\Python36-32\lib\http\client.py", line 297, in begin
version, status, reason = self._read_status()
File "D:\Program Files (x86)\Python\Python36-32\lib\http\client.py", line 258, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "D:\Program Files (x86)\Python\Python36-32\lib\socket.py", line 586, in readinto
return self._sock.recv_into(b)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\requests\adapters.py", line 440, in send
timeout=timeout
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\urllib3\connectionpool.py", line 639, in urlopen
_stacktrace=sys.exc_info()[2])
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\urllib3\util\retry.py", line 357, in increment
raise six.reraise(type(error), error, _stacktrace)
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\urllib3\packages\six.py", line 686, in reraise
raise value
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\urllib3\connectionpool.py", line 601, in urlopen
chunked=chunked)
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\urllib3\connectionpool.py", line 389, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\urllib3\connectionpool.py", line 309, in _raise_timeout
raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value)
urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='localhost', port=63463): Read timed out. (read timeout=3)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "D:\Program Files (x86)\Python\Python36-32\lib\runpy.py", line 193, in run_module_as_main
"
main", mod_spec)
File "D:\Program Files (x86)\Python\Python36-32\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\uiautomator2__main
.py", line 356, in
main()
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\uiautomator2__main
.py", line 352, in main
fire.Fire(MyFire)
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\fire\core.py", line 127, in Fire
component_trace = _Fire(component, args, context, name)
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\fire\core.py", line 366, in _Fire
component, remaining_args)
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\fire\core.py", line 542, in _CallCallable
result = fn(*varargs, **kwargs)
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\uiautomator2__main
.py", line 273, in init
ignore_apk_check)
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\uiautomator2__main
.py", line 295, in _init_with_serial
ins.launch_and_check()
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\uiautomator2__main
_.py", line 225, in launch_and_check
'http://localhost:%d/version' % lport, timeout=3)
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\requests\api.py", line 72, in get
return request('get', url, params=params, **kwargs)
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\requests\api.py", line 58, in request
return session.request(method=method, url=url, **kwargs)
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\requests\sessions.py", line 508, in request
resp = self.send(prep, **send_kwargs)
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\requests\sessions.py", line 618, in send
r = adapter.send(request, **kwargs)
File "D:\Program Files (x86)\Python\Python36-32\lib\site-packages\requests\adapters.py", line 521, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPConnectionPool(host='localhost', port=63463): Read timed out. (read timeout=3)

初始化时候报这个错 怎么解决呢?

59楼 已删除
急急急 回复

adb shell rm /data/local/tmp/atx-agent 之后 再执行 python -m uiautomator2 init试试看

准备实践下,想请教下楼主,atx-agent如何解决国内各种定制手机的apk安装的限制? 比如oppo、vivo的帐号弹框,vivo还有个烦人的模拟点击,小米的安全权限等等。

另外安卓手机还有bug,存在uid leak的情况,简单来说就是apk循环安装卸载,重复10000次,手机就没办法再安装apk了,我报给google,但是google不修。这就意味着手机需要定时重启,重启后如何拉起等等问题。

C:\Users\renchuanbin>python -m uiautomator2 init 192.168.137.104:8000
2018-05-18 13:58:35,549 - main.py:254 - INFO - atx-server addr 192.168.137.104:8000
2018-05-18 13:58:35,572 - main.py:269 - INFO - Detect pluged devices: [u'192.168.137.118:5555']
2018-05-18 13:58:35,572 - main.py:286 - INFO - Device(192.168.137.118:5555) initialing ...
2018-05-18 13:58:35,842 - main.py:113 - INFO - install minicap
2018-05-18 13:58:36,160 - main.py:120 - INFO - install minitouch
2018-05-18 13:58:36,407 - main.py:137 - INFO - apk(1.0.14) already installed, skip
2018-05-18 13:58:36,509 - main.py:175 - INFO - atx-agent(0.3.2) already installed, skip
2018-05-18 13:58:36,648 - main.py:212 - INFO - launch atx-agent daemon
2018-05-18 13:58:41,788 - main.py:238 - ERROR - failure

请问启动atx-agent失败 是怎么回事呢?

奋斗的鸡腿 launch atx-agent daemon 失败解决办法 中提及了此贴 05月18日 18:16

请问下,我使用的是usb链接,界面启动成功,但是不能看到我链接上的设备信息。使用adb devices也能拼到设备是链接成功的

执行下python -m uiautomator2 init 10.0.34.75:8000后面换成你server的ip

linpengcheng 回复

init了的,也显示success了的

sherrycc 回复

手机和电脑在同一个wifi下吗?

linpengcheng 回复

好像不是。。

linpengcheng 回复

链接到同一个wifi下面,也不行。。

sherrycc 回复

感觉就是局域网的问题 你网路再看看

linpengcheng 回复

网页可以正常显示了,应该是局域网的问题。我直接用手机分享无线网,然后电脑连接这个无线网,就可以正常显示了,但是有个问题不知道是不是正常的:我在init里面,显示的监控的设备ip和网页上面显示的IP不一致,一直是offline的状态

sherrycc 回复

offline 显示的ip还是之前的设备ip 再重新online后 就会变成正确的了 所以你还是搞个无线路由器试试看吧

linpengcheng 回复

好的,谢谢~~我搭建出来的网页,第5步哪里,没有眼睛图标可以点击,直接点更多下面的图标,跳转过去就一直是黑色的。。请问下这个是我搭建的问题么?

sherrycc 回复


现在的页面长这样了 点击use跳转到操作页面
你说的黑色页面 是shell页面吧 可以直接输入shell命令操作手机 adb shell一样

linpengcheng 回复

好的~谢谢啦,非常感谢大佬提供帮助👍 👍 👍 👍

小米5S连接上了,但是鼠标点屏幕没反应。有谁遇到过么,在开发者选项中也没找到 允许模拟点击选项。

点下面的home,back键倒是有反应。

另外一台oppo R9 倒是有反应

cloudwind 回复

不同miui的系统版本可能不太一样 在设置下仔细找找看

linpengcheng 回复

找了半天实在没找到这选项,是不是小米手机都有这个问题。

cloudwind 回复

有的好像不用设置的

python -m uiautomator2 init 192.168.165.2:8000
2018-05-29 10:27:41,334 - __main__.py:254 - INFO - atx-server addr 192.168.165.2:8000
Traceback (most recent call last):
File "E:\Python35\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "E:\Python35\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "E:\Python35\lib\site-packages\uiautomator2\__main__.py", line 352, in <module>
main()
File "E:\Python35\lib\site-packages\uiautomator2\__main__.py", line 348, in main
fire.Fire(MyFire)
File "E:\Python35\lib\site-packages\fire\core.py", line 127, in Fire
component_trace = _Fire(component, args, context, name)
File "E:\Python35\lib\site-packages\fire\core.py", line 366, in _Fire
component, remaining_args)
File "E:\Python35\lib\site-packages\fire\core.py", line 542, in _CallCallable
result = fn(*varargs, **kwargs)
File "E:\Python35\lib\site-packages\uiautomator2\__main__.py", line 261, in init
output = subprocess.check_output(['adb', 'devices'])
File "E:\Python35\lib\subprocess.py", line 316, in check_output
**kwargs).stdout
File "E:\Python35\lib\subprocess.py", line 383, in run
with Popen(*popenargs, **kwargs) as process:
File "E:\Python35\lib\subprocess.py", line 676, in __init__
restore_signals, start_new_session)
File "E:\Python35\lib\subprocess.py", line 957, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] 系统找不到指定的文件。
尹全旺 回复

adb 没装? 手动执行adb devices看看

win环境下
3、build atx-server
Mac下的Gopath 为: /Users/test/go
$ cd $GOPATH/src/github.com/openatx/atx-server #GOPATH=‘/Users/test/go’

以上要改为

要用 echo %GOPATH% 来确认路径 和
cd %GOPATH%\src\github.com\openatx\atx-server 来切换 或者绝对路径切换

还有已知开启360 或者eset杀软,会影响连接真机.需要关掉360或暂停esst防护才可.

手机重启后就连接不上了,又要重新连电脑装包才行,能不能安装一次之后,可以在手机上手动启动

huan 回复

连接usb 调用一下 /data/local/tmp/atx-agent -d 就可以

codeskyblue 回复

有没有不连接usb,在手机端启动??好像atx对横屏支持还不太友好喔

linpengcheng 基于 ATX-Server 的 UI 自动化测试框架 中提及了此贴 06月18日 22:20
小马 ATX 安卓集群管理 atx-server 使用记录整理 中提及了此贴 06月20日 14:45

用虚拟机测试,在web页面上显示不出设备

是的,模拟器不支持

必须要连接WIFI且在同一网段下吗?我断开wifi显示offline了。现在可以在页面上直接进行代码操作吗?

Joe 回复

断了wifi肯定不行 都是通过http来通信的

linpengcheng 回复

请问怎么删除Offline的设备呢?谢谢,同样的机器只是IP变了

Joe 回复

去rethinkdb里删掉就好了 可参考这个帖子 https://testerhome.com/topics/5848

win7 安装atx 报错如下:

F:\Go\src>go get -v github.com/openatx/atx-server
github.com/openatx/atx-server (download)

cd .; git clone https://github.com/openatx/atx-server F:\golang\go\src\github.

com\openatx\atx-server
Cloning into 'F:\golang\go\src\github.com\openatx\atx-server'...
fatal: unable to access 'https://github.com/openatx/atx-server/:' error:1407742E
:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
package github.com/openatx/atx-server: exit status 128

Asiazhang 回复

翻个墙试试

问下哈,这边我在安卓手机上执行命令成功安装了uiautomator2,但是刷新atx-server页面却没看到设备,然后我就换了一台安卓手机同样执行命令来安装,但是却报如下错误,帮忙看下啥问题

这里点击不了,一开始可以点击use,刷新页面就变这样了

枫叶 回复

因为已经有网页在使用该手机

codeskyblue 回复

好吧,我的锅,上面那个是啥问题,换台手机安装就报错的

枫叶 回复

像小米 oppo vivo这些手机 adb 安装需要手动点一下允许才能安装成功

linpengcheng 回复

为什么有些手机在网页端操作不了,有些又可以操作呢

cloudwind 回复

这边小米5遇到同样问题,请问你的解决了吗

枫叶 回复

init的时候 minitouch没安装好吧 重新init应该就好了

rethinkdb 可以用其他替换吗

xcwstsoftware 回复

那比较难改咯

“多台设备同时执行脚本,或者先后执行同一个脚本”。有实践过的吗?
@cynic @codeskyblue

server也起来了,init也成功了 ,网络也能ping通的 ,杀毒软件 防火墙之类的也关了,手机上允许USB模拟权限开启了,更换过一台设备但是网页上还是没有出现设备。不知道哪里还会有问题?
@cynic 请指教

112楼 已删除
zhaiworld 回复

init的时候 server的ip填对没有?

linpengcheng 回复

本机IP:8000 启动成功。通过python -m weditor 也可以正常操作手机。

zhaiworld 回复

啥系统的电脑啊
不行就换个电脑看看

有点激动,立马实践下先!

thanksdanny 回复

九个月前发的帖子 你还激动?

linpengcheng 回复

发现新大陆当然激动拉

C:\Users\luoZhongXu>python -m uiautomator2 init 100.64.233.232:8000
2018-10-19 09:40:15,370 - main.py:289 - INFO - atx-server addr 100.64.233.232:8000
Traceback (most recent call last):
File "C:\Users\luoZhongXu\AppData\Local\Programs\Python\Python37\lib\runpy.py", line 193, in run_module_as_main
"
main", mod_spec)
File "C:\Users\luoZhongXu\AppData\Local\Programs\Python\Python37\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Users\luoZhongXu\AppData\Local\Programs\Python\Python37\lib\site-packages\uiautomator2__main
.py", line 394, in
main()
File "C:\Users\luoZhongXu\AppData\Local\Programs\Python\Python37\lib\site-packages\uiautomator2__main
.py", line 390, in main
fire.Fire(MyFire)
File "C:\Users\luoZhongXu\AppData\Local\Programs\Python\Python37\lib\site-packages\fire\core.py", line 127, in Fire
component_trace = _Fire(component, args, context, name)
File "C:\Users\luoZhongXu\AppData\Local\Programs\Python\Python37\lib\site-packages\fire\core.py", line 366, in _Fire
component, remaining_args)
File "C:\Users\luoZhongXu\AppData\Local\Programs\Python\Python37\lib\site-packages\fire\core.py", line 542, in _CallCallable
result = fn(*varargs, **kwargs)
File "C:\Users\luoZhongXu\AppData\Local\Programs\Python\Python37\lib\site-packages\uiautomator2__main
.py", line 300, in init
sn for sn, _ in adbutils.Adb().devices(states=['device'])
File "C:\Users\luoZhongXu\AppData\Local\Programs\Python\Python37\lib\site-packages\uiautomator2\adbutils.py", line 34, in devices
output = subprocess.check_output([self.adb_path(), 'devices'])
File "C:\Users\luoZhongXu\AppData\Local\Programs\Python\Python37\lib\subprocess.py", line 389, in check_output
**kwargs).stdout
File "C:\Users\luoZhongXu\AppData\Local\Programs\Python\Python37\lib\subprocess.py", line 466, in run
with Popen(*popenargs, **kwargs) as process:
File "C:\Users\luoZhongXu\AppData\Local\Programs\Python\Python37\lib\subprocess.py", line 769, in __init
_
restore_signals, start_new_session)
File "C:\Users\luoZhongXu\AppData\Local\Programs\Python\Python37\lib\subprocess.py", line 1113, in _execute_child
args = list2cmdline(args)
File "C:\Users\luoZhongXu\AppData\Local\Programs\Python\Python37\lib\subprocess.py", line 524, in list2cmdline
needquote = (" " in arg) or ("\t" in arg) or not arg
TypeError: argument of type 'NoneType' is not iterable
楼主请教一下这是什么原因。

aidada 回复

https://github.com/openatx/uiautomator2#limitation-%E9%99%90%E5%88%B6

暂时对python37的支持还没做 你装pytho36的再试一下看看

linpengcheng 回复

感谢解答,不过我换了几个版本都还是同样的问题。

aidada 回复

换个手机试试

看看你是不是在atx-server的文件夹下启动服务,需要cd go/src/github.com/openatx/atx-server/ 到atx-server目录下载执行./atx-server
我这个地方没有这个 atx-server
但是在usr/local/go/bin/下面有 atx-server
我在这里启动怎么127.0.0.1:8000没有显示

ubantu 16.04 系统

xcwstsoftware 回复

要到 gopath/src/github.com/openatx/atx-server/ 这个目录下执行./atx-server 启动才能正常
你先把gopath在环境变量中配置好呗

如果在uiautomator.apk里手动点击“停止UIAUTOMATOR”和“停止ATXAGENT”以后,再跑脚本就会提示需要重新安装uiautomator.apk,怎么重新打开这两个服务呢?杀了进程重新进App还是没有用。

Lyzin 回复

python -m uiautomator2 init

linpengcheng 回复

那就是说,如果不小心误操作点了 uiautomator里的停止UIAUTOMATOR”和“停止ATXAGENT”,只能通过重新安装这个uiautomator.apk来让服务重启了?

linpengcheng 回复

那杀uiautomator.apk进程是不会让这两个服务关闭吗?,只有点“停止UIAUTOMATOR”和“停止ATXAGENT”,才算服务被关闭了?

Lyzin 回复

是的
是的
等会儿就好了

运行一段时间后,通过网页操作手机就非常卡,你们的是这样吗?有人反馈过这问题吗


大神看我这是什么情况,能看到手机,就是不能操作。。。。。。

Smile 回复

为啥serial都是空的

Smile 回复

我跟你遇到同样的问题,话说你解决了么

136楼 已删除
thanksdanny 回复

木有。。。。

linpengcheng 回复

出来的界面就是这样,好像没连好一样,不能操作。。。大神肿么办呀

Smile 回复

你是不是用的虚拟机的?

thanksdanny 回复

MAC笔记本

仅楼主可见
thanksdanny 回复

这个问题很奇特啊,不知道怎么搞。。。。。

linpengcheng 回复

哦对,我用的Python3.7,这个会不会有影响。。。。

Smile 回复

我的是2.7呀 也是同样问题,不过我的是虚拟机开的

thanksdanny 回复

可怕,反正就是不能用。。。。。

Smile 回复

我mac上部署却是正常的

thanksdanny 回复

。。。。。。。。

148楼 已删除
Smile 回复

不能用+1

梵心一点 回复

孩怕

Smile 回复

atx-server装不上吗?

go version # 期望1.11
git clone https://github.com/openatx/atx-server
go build

1.显示不出序列号、型号、品牌的问题我也遇到了,不过后来重新init了一下不知道怎么又好了~
2.大佬,想问下我在atx-server这边点use远程操作手机很灵敏,但是用python -m weditor打开后操作手机却非常慢。。。大概是什么问题啊~

我的小米4 一闪而过咋回事?

一定要在同一wifi下吗?在同一内网行不行,同一网段?我准备部署到内网服务器上。

同一个网段就行吧,我们公司的wifi也是相当复杂....

我在内网服务器用docker启动好了,在电脑本地也用docker启动好了,手机上init成功了,通过我的电脑访问atx-agent,也能正常显示页面,但是init的时候无论是把atx-server的地址指向服务器还是指向我同一wifi下的电脑的地址,atx-server的web页面都没有显示设备,这个可能是什么原因?或者该如何调试?

电脑是Mac,防火墙已经关闭

我是直接起在mac上的 没用docker

xcwstsoftware 回复

我也是,弄好了,好开心,可是开个会回来发现好慢啊

因为流量是通过wifi的,所以不太快

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