ATX uiautomator2 init 失败及其他问题的解决办法

linpengcheng · 2018年12月13日 · 最后由 乱斗东 回复于 2019年01月18日 · 1807 次阅读
设备使用本地文件执行init

下载地址:https://share.weiyun.com/5nNDyET

最近在群里发现好多同学在执行uiautomator2 init的时候,总是出各种错误。在这里需要总结下,以免新来的同学掉到坑里。

首先看一下init的源代码:

def _init_with_serial(self, serial, server, apk_version, agent_version,
reinstall, ignore_apk_check):
log.info("Device(%s) initialing ...", serial)
ins = Installer(serial)
ins.server_addr = server
ins.install_minicap()
ins.install_minitouch()
ins.install_uiautomator_apk(apk_version, reinstall)

log.info("atx-agent is already running, force stop")
ins.shell("/data/local/tmp/atx-agent", "-stop", raise_error=False)
ins.shell("killall", "atx-agent", raise_error=False)
ins.shell("rm", "/sdcard/atx-agent.pid", raise_error=False)
ins.shell("rm", "/sdcard/atx-agent.log.old", raise_error=False)
if not ins.check_agent_installed(agent_version):
ins.install_atx_agent(agent_version, reinstall)

if not ignore_apk_check:
ins.check_apk_installed(apk_version)
ins.launch_and_check()

很容易看懂,最主要的就是这几行

ins.install_minicap()
ins.install_minitouch()
ins.install_uiautomator_apk(apk_version, reinstall)
ins.check_apk_installed(apk_version)

就是往手机了装了4个东西minicap minitouch uiautomator_apk atx-agent ,其实是5个东西 uiautomator_apk安装了app-uiautomator.apkapp-uiautomator-test.apk两个apk

下面将大家经常遇到的几个问题总结下

1、等了好长时间没反应,提示404,安装失败 ,package com.github.uiautomator.test not installed

不要慌,其实由于好多同学网络的原因,导致上面所说的5个东西总是下载失败才会出现这样的错误的。一般都是uiautomator_apk没有下载下来造成的。
解决的办法:手动去这个地址下载和你本地uiautomator2版本匹配的apk,https://github.com/openatx/android-uiautomator-server/releases
然后手动安装上去 ,再执行一下python -m uiautomator2 init看看(uiautomator2版本匹配可以在pip安装的uiautomator2的目录下有个versiopn.py的文件里可以看到)

2、我启动了atx-server 手机也init好了 但是atx-server上没有出现设备啊

请先确定你手机 init的时候,后面跟着的server的地址是对的 例如你atx-serve的地址是10.0.12.34:8000
那么你执行init命令就应该是:python -m uiautomator2 init 10.0.12.34:8000 确保你后面8000的端口号没忘记。
然后看一下你的手机的wifi有没有和电脑连在同一个网下面。如果还是没有出来,就再执行一下上面的那个init的命令
以上都是针对真机的,如果你用的是模拟器的话,建议你还是换一个真机来试一试。也不太明白为什么拿模拟器连atx-serve....

3、我init之后 atx-serve上出现设备了,点击手机的画面出不来,点操作也没反应

atx-serve设备点击 use之后画面的实时展示和可操作都是依赖minicap minitouch 的,应该是这两个没有安装成功造成的。
再重新init之后试试看,实在不行就手机重启之后,再init一下试试看。
以上也是针对真机的,模拟器的话,minicap 就是不支持的,init成功了也没用,建议换真机

4、我用weditor来定位元素的时候,画面出不来啊

和3的问题一个原因,真机的话重新init;模拟器的话,minicap 就是不支持的,init成功了也没用,建议换真机

5、我的手机init总是提示安装失败

先看一下你手机是什么牌子的,看看你直接执行adb install安装能不能正常安装成功
比如小米的,需要在开发者选项里打开两个选项(就是usb选项下第一个和第二个,叫啥名字忘记了)
比如OPPO、VIVO的手机,init安装的时候需要手动确认输密码
还有其他很多安卓手机,各种各样的问题自己慢慢摸索吧

6、大佬,XXX怎么搞得,发我一份

自己看文档去....
https://github.com/openatx/uiautomator2

之前的Q&AATX 项目 Question and Answers (FAQ) QQ 群消息问答部分汇总

--------😄 😆 😵 😭 😰 😅 分割线 😢 😤 😍 ☺ 😎 😩--------

针对第一个下载不成功的问题,我把init的代码中下载的部分全部改成了使用本地文件了
所有需要下载的文件都已经下载好了

如果atx-agent 和auiautomator_apk的版本更新了的话,去U2.py下改一下版本号,然后把新版的文件下载下来放到和版本号重名的文件夹里面就行了
uiautomator_apk下载地址
atx-agent下载地址
minicup&minitouch下载地址

使用方法和原来的init类似,解压压缩包之后,命令行cd到这个文件夹下后,执行命令python -m U2 init就行了

下载地址:https://share.weiyun.com/5nNDyET

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

安装appium时,自带了 uiautomator2 ,这时候如果使用 uiautomator2 还是失败的话,有可能是安装或使用appium的时候权限不够,导致 uiautomator2 _apk安装失败,查看 uiautomator2_apk 是否安装成功,可以通过查看apk的大小来确认。

虽然使用atx时没遇到上面这么多的问题,但是还是要对楼主说句:谢谢!



用三星pad作为真机,项目需要修改分辨率,weditor元素页面无法正确展示怎么办?

Rommy 回复

卸载weditor 然后pip install weditor==0.1.0看看,
三星的需要到 设置-显示-屏幕分辨率调整下

Rommy 回复

你这个是游戏的界面吧 有的游戏界面是用uiautomator定位不到元素的

最近也在玩uiautomator2,也碰到了些问题。

刨去网络问题,装个0.1.7版本init基本就稳定了。

但是有个问题就是,我手上4台手机,同样的自动化,在其中2台,跑着跑着,uiautomator server就挂掉了,client这边就报read timeout了。
再次执行healthcheck()后恢复,但是就有点耗时了和不稳定了。
来不及看源码, @codeskyblue 可以知晓下😉

linpengcheng 回复

还是一样。。。 不是游戏页面 是应用

大东 回复

你把复现方法告诉我,我就能修好

codeskyblue 回复

应该是特定设备的问题。 两台华为P20 Lite。

就是普通的运行,跑着跑着调用d.info或者其他接口就timeout了。

大神,我输入python -m uiautomator2 init,可以正常执行,但是在网页上找不到设备,我输入python -m uiautomator2 init 192.168.1.102:8000,直接会报错:main.py: error: unrecognized arguments: 192.168.1.102:8000,这是什么情况?

乱斗东 回复

看你的 192.168.1.102:8000 是不是有中文字符(:), 正常的英文字符应该是 192.168.1.102:8000

Jerry li 回复

哥,检查过了都是英文输入,是不是新版本有变动?

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