ATX ATX 项目 Question and Answers (FAQ) QQ 群消息问答部分汇总

codeskyblue · 2018年02月25日 · 最后由 frappexx 回复于 2020年06月06日 · 14 次阅读

简介

本来想用 TIM 的在线文档来着,结果经常保存出错,害的写了好久的文档一瞬间就没了。然后也没有找到别的合适的记录问答的地方,就先写在 testerhome 吧

Question & Answer

Q: uiautomator2 如何对单个设备进行初始化?
A: python -m uiautomator2 init --serial $SERIAL

Q: WEDITOR 是不是对安卓 5 以下的不友好?
A: 对 Android 4.3(SDK: 18) 以上的支持的都很好。

Q: 有什么办法能够加快 atx 对 android 设备的图片的识别速度吗,感觉好慢啊?
A: atx 的识别速度本身已经是毫秒级的了,影响速度的主要是截图速度,目前是通过 minicap 截图的,已经很快了

Q:uiautomator2 的报错
uiautomator2.JsonRpcError:-32001 Server error: java.lang.IllegalArgumentException <Illegal character (d83d) >
A: 应该是界面上有什么特殊字符,java 代码那部分处理的有问题。相关项目地址:https://github.com/openatx/android-uiautomator-server

Q: `cannot identify image file <_io.BytesIO object at 0x07598adfa>
A: 暂时我也没遇到过这个问题,可以通过下面的方法分析下。

  1. 手机打开http://127.0.0.1:7912/screenshot/0看看显示的什么
  2. adb shell cat /sdcard/atx-agent.log看看有什么报错不

Q: Command 'adb -s 87a6sdf9s forward --list' return non-zero exit status 1
A: 有可能是 adb 没加入环境变量,或其他 adb 相关的问题。用下面的命令分析下

  1. adb devices看看设备是不是 offline
  2. 命令行下运行下报错的命令,看看输出什么 adb -s 87a6sdf9s forward --list

Q: weditor 的报错

A: 先点击 Connect,然后再点击 Reload

Q: ModulesNotFoundError: No module named 'cv2'
A: 这个错误是因为 opencv 没有安装,安装方法 pip install opencv-contrib-python

Q: 使用 atx uiautomator2 init 之后,uiautomatorviewer 就不能使用了

A: 凡是用到 accessibilityservice 的程序互相之间都会冲突,解决方法是需要先关掉 atx uiautomator2. 给 uiautomatorviewer 让路

  1. 打开 uiautomator 这个应用
  2. 点击停止UIAUTOMATOR

使用 python 代码停止到 uiautomator 的方法是d.service("uiautomator").stop()

Q: 话说 atx server 能不能通过 wan 链接手机呢?如果能,岂不是在异地也能管理?
A: 计划中

Q: uiautomator2 更新命令是什么来的?
A: pip install --upgrade --pre uiautomator2

Q: airtest 也是另外一个 atx,有什么联系??
A: 以前设计 airtest 的时候感觉各种架构都不好,然后就大改了一波,当时改了快 2 个星期的样子。为了和之前的分开来,就改名了。一开始叫 AutomatorX,但是名字太长了,打字不方便,就简化成了现在的 atx

Q: atx-agent 怎么升级?
A: 先升级 uiautomator2,然后重新运行命令python -m uiautomator2 init

Q: 联想手机,chmod 777 /data/local/tmp/atx-agent 授权过了, 但没有用,查看权限,只有 rw,没有 e 权限
A: nobia 的手机有类似的问题。将atx-agent放到这个目录下 /data/data/com.android.shell, 就可以了

Q: uiautomator2 使用不了,日志/sdcard/atx-agnet.log中发现下面的错误

A: 运行python -muiautomator2 init命令,手机上会安装两个 apk,这个错误应该是包名com.github.uiautomator.test的 apk 没有安装

Q: 手机关机,重启后,不能自动连接上 atx-agent,都要重装 uiautomator
A: 必需重新再 init 一下。如果嫌每次都要 init 麻烦,可以看下这个项目,它可以在手机插上电脑之后,自动执行 init。adbkit-init

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

赞👍

推荐 mkdocs,非常简单易用

@codeskyblue 楼主 使用内置的测试报告功能报错,请帮忙看下是哪里的问题; AttributeError: module 'uiautomator' has no attribute 'add_listener'

lb 回复

那是个 bug 还没修

codeskyblue 回复

@codeskyblue 好的,楼主近期有修复计划吗?

lb 回复

缓慢的修复中

已解决

是小米手机的设置问题。 解决方式来源:https://github.com/NetEaseGame/ATX/wiki/Common-Issues

想请教下,运行以后报错如下:

sonRpcError: -32001 Server error: java.lang.SecurityException <Injecting to another application requires INJECT_EVENTS permission>

要怎么办呀? 代码如下:

# -*- coding: utf-8 -*-
import uiautomator2 as ut2
import time
import unittest

class OwepaymentTests(unittest.TestCase):
    def setUp(self):
        self.u = ut2.connect('34c63520')
        print (self.u.device_info)
        self.u.app_start('com.ecaray.epark.pub.xian')

    def test_owe_payment(self):
        self.u(text='订单记录').click()
codeskyblue [该话题已被删除] 中提及了此贴 03月22日 08:21

运行 python -m uiautomator2 init,不成功,这是什么原因导致的?

大海 回复

被墙了,再来一次

请问 ATX 是否可以实现同时触碰 2 个或者以上的按键呢?比如王者荣耀游戏中同时左手操作前进,右手按下攻击按键

240581580 回复

暂时不可以,不过你说的王者荣耀单手也能完成。除非你有更好的例子说服我,我再考虑要不要实现一下

向大神求助:python -m uiautomator2 init 输入后,最后提示:EnvironmentError: package com.github.uiautomator version expect "1.0.12" got "None" ,应该怎么破?这些组件都安装不成功!

和曦 回复

一路膜拜着大神的脚步来的,请教下之前你的 WDArunner 闪退怎么解决的呀

和曦 回复

由衷感谢回复,我开始按照你的截图设置了没用,carthage、node 卸载后重新安装就好了!!!什么操作都没做,就按照官网的安装步骤就可以跑起来了。。。估计是 carthage 的问题,卸载了重装完美解决

用 ATX 测试网易阴阳师,安卓日志记录了下面的异常,麻烦看下是否是 ATX BUG 呢?(黑盒效果就是游戏闪退了) java.lang.IllegalStateException: Cannot call disconnect() while connecting! at android.app.UiAutomation.disconnect(UiAutomation.java:272) at android.app.Instrumentation.finish(Instrumentation.java:245) at android.support.test.runner.MonitoringInstrumentation.finish(MonitoringInstrumentation.java:277) at android.support.test.runner.AndroidJUnitRunner.finish(AndroidJUnitRunner.java:282) at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:271) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2120)

240581580 回复

把错误的复现方法也贴一下

init 一直这样怎么办

丽华 回复

挂代理

请问下 停止 UIAUTOMATOR 后,想要重新启动只能连电脑用命令去重启吗

请问下,运行 python -m uiautomator2 init,不成功,这是什么原因导致的?

关于我遇到 Command 'adb -s 87a6sdf9s forward --list' return non-zero exit status 1 的解决办法。。通过询问楼主解决的。把 1.0.31 版本的 adb 更换成 1.0.39 版本的 adb 即可。。

OPPO X21A 连接电脑时网页上显示正常,移动到插板之后网页上该设备状态由 Use 变成 OFFline,如何解决这个问题?

连接夜神模拟器后,weditor 中的屏幕是黑的;这个是什么问题呢

守望者 回复

同样遇到这个问题,不知怎么解决。

t-bug 回复

执行 adb shell rm /data/local/tmp/minicap

codeskyblue 回复

估计还有其他的 bug,会尽快 fix 的

codeskyblue 回复

感谢,已正常工作。

@codeskyblue 另:/atx/drivers/android.py 中第 90 行为什么要注释掉? # self._adb_shell_timeout = 30.0 # max adb shell exec time 这样如果不传参数(timeout)的话会报错。

33楼 已删除

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

codeskyblue 专栏文章:2018年 终总结 中提及了此贴 02月18日 02:26
乱斗东 回复

同样遇到该问题,你解决了吗

乱斗东 回复

同遇到这样的问题,在网页上输入 ip 加端口号是能进入 ATX-Server 的,有没有大佬知道怎么解决😔

枫叶 回复

我在这边文章下面看到了这个问题的解决方法,链接地址:https://testerhome.com/topics/11588 解决方法是在 ip 前面加上--server,例如:python -m uiautomator2 init --server 172.17.152.101:8000

@codeskyblue 你好,请问在用 U2 跑脚本途中遇到如下问题是什么导致的?之前是 U2 不停在 “uiautomator is starting ...” Thanks~

Joe 回复

adb forward --list 是不是 adb 重启了,或者设备断线之后立刻重连了

我试用华为 p20 8.1 系统,init 后拔出 USB,U2 就 GG 了. 只有一直插着 USB 才可以. 请问有解决方法么? 我试过 5.1 6.X 7.X 系统的手机没有这种问题. 主要想学习该帖子:https://testerhome.com/topics/11980 脱离电脑执行一些脚本.

准备用这个来做公司 app 的安卓自动化,感谢大佬

为什么手动安装 minicap 运行不成功 但是用 Appetizer.exe 这个程序就行呢 诡异啊

请问有 NODE JS 封装的 UIAUTOMATOR2 或其组件吗?

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