【python-uiautomator2】手机上的ATX应用界面报错问题处理:无法提供服务,非am instrument启动

发布于:2025-03-12 ⋅ 阅读:(8) ⋅ 点赞:(0)

目录

一、前期准备

1.1 插入设备

1.2 安装atx-agent

二、解决报错:无法提供服务,非am instrument启动

2.1 出现报错

2.2 尝试解决

2.3 最终解决

三、开启ATX的悬浮窗权限


一、前期准备

1.1 插入设备

本地插入待执行设备,待执行设备需进行以下设置,先打开 设置-更多设置-开启开发者模式,找到设备的版本信息、或是安卓版本号、或是软件版本号,快速点击多次7次,就可以看到“已开启开发者模式”的提示。

返回“系统管理”,或是设置页面,就可以看到“开发者选项”,一般都在页面偏下的位置。

进入开发者选项,开启开发者选项开关。并在开发者选项里面打开:不锁定屏幕,USB调试,USB安装,USB调试(安全设置)。

1.2 安装atx-agent

首先设备连接到PC,并能够adb devices发现该设备。打开cmd,执行下面的命令会自动安装本库所需要的设备端程序,

python -m uiautomator2 init

最后提示success,代表atx-agent初始化成功,在手机桌面上显示应用ATX。

二、解决报错:无法提供服务,非am instrument启动

2.1 出现报错

ATX-Agent装好之后,开始在pyCharm中运行代码,但是程序出现报错。并且手机上ATX应用显示报错信息为“无法提供服务,非am instrument启动”。

2.2 尝试解决

网站找了各种方法比如加权限或者 点击atx app 里面的启动,

(1)打开cmd,运行如下命令

进入shell,停止ATX服务,在7912端口中启动ATX服务,让UIautomator2在后台运行服务。

(2)点击 atx app 启动 UIAUTOMATOR 一直点直到“正常服务模式”出现,但是我的需求是自动化开启模拟器然后自动化app, 这种方案不行。

(3)看到有位博主说去atx-agent官网,github源码介绍有这样一句,

博主博客:uiautomator2 无法连接 ATX-Agent-CSDN博客

官网地址:https://github.com/openatx/atx-agent

#停止已经运行的atx-agent并启动守护进程
# stop already running atx-agent and start daemon
$ adb shell /data/local/tmp/atx-agent server -d --stop

执行这个命令之后,在pyCharm重新运行代码,还是报错。

2.3 最终解决

(1)最后,我卸载并重新安装了uiatomator2第三方包,因为之前安装的uiatomator2包版本有点低,就想着重新安装一下,换个版本试试。

pip uninstall  uiautomator2
pip3 install  uiautomator2

(2)重新安装完成之后,新建一个py文件,通过运行代码来查看环境是否配置成功。

注意:在运行这段代码之前,需要确保 Android 设备已经通过 USB 连接到计算机,并且设备已经开启了 USB 调试模式。

import uiautomator2 as u2

d = u2.connect() # connect to device
print(d.info)

这行代码调用 uiautomator2 对象的 connect() 方法来尝试连接到一台 Android 设备,并将连接后的设备对象赋值给变量 driver 。connect() 方法默认会尝试连接通过 USB 连接到计算机的第一台 Android 设备。如果需要连接指定序列号的设备,可以在 connect 方法中传入设备序列号。

设备对象 driver 的 info 属性,该属性包含了设备的各种信息,如屏幕分辨率、电池电量、系统版本等。

运行代码,这时看到类似下面的输出,就可以正式开始用我们这个库了。

(3)安装并且测试完成之后,重新在pyCharm中运行代码,很莫名其妙的就不报错了。。。。

三、开启ATX的悬浮窗权限

另外为了保持稳定,还需要开启ATX小黄车的悬浮窗权限。

主要有两步,

  1. 给小黄车的悬浮窗权限加权
  2. 开启小黄车的悬浮窗(这一步其实也不需要,因为代码会自动拉起来一个悬浮窗)

(1)首先,打开手机,在设置的应用中,找到ATX,打开应用的悬浮窗授权。

(2)然后,点击ATX小黄车打开ATX应用,,点击快捷方式中的“开启悬浮窗”,这个时候界面右侧会出现一个小小的小黄车,代表应用已经成功启动了。

此时,uiautomator2的后台服务在论上可以存活很久很久。