QPython+uiautomator2安卓手机自动化脚本编写

  • 开始
  • 手机端运行
    • 不需要尝试的
    • 换个思路
  • 使用图像匹配
  • 常见问题

uiautomator2使用说明:https://github.com/openatx/uiautomator2

前置条件:电脑安装了adb,可以使用adb devices命令
额外说明:本篇论述的是在手机数据线与电脑互联的情况下,用电脑控制手机的自动化
PS:和QPython好像没有太大关系,通过WIFI互联还有待研究。如果要编写不连接电脑就可以实现自动化的脚本,可以使用Autojs或者按键精灵。

开始

首先下载QPython_3C发行版:https://gitee.com/buddygr/qpython-3c

由于QPYPI安装uiautomator2库失败或使用时报错,为此我直接从电脑上复制库文件到手机上去。(这是前面尝试的,主要是安装PIL报错,后来我感觉应该可以先装作者gitee上的科学计算包把PIL先装了,再直接pip install uiautomator2应该可以成功吧)

如下打开终端,使用platform库可以看到:
推荐电脑使用和QPython一样的python版本,如下,QPython是3.10.5 64bit 且是Linux版的,电脑去装一个Windows版的就行(好像也没有Linux版的,需要手动编译),然后使用此版本的Python进行开发。
接着使用pycharm创建新项目,新环境中安装uiautomator2及uiautomator2[image](待会儿我把整个site-packages文件夹复制过去)

(注意在新环境中安装库,可以使用pycharm安装,或者是在新环境的pip.exe目录下进行pip安装)

接着

手机数据线连接电脑,手机打开开发者选项,并且打开USB调试

然后
电脑adb连接手机 adb devices,并查看序列号

再然后
再次输入python -m uiautomator2 init 或者 uiautomator2 init(在Scripts文件夹中) 即init 所有已经连接到电脑的设备,安装相应的软件(ATX)


电脑端编写demo1.py如下:

# !/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Created by Pycharm
@python-version 3.8
@author lqh
@time 2022/6/30 12:45
"""import uiautomator2 as u2d = u2.connect("序列号")
d.screen_off()  # 关闭屏幕

运行代码,观察手机。

上述操作成功后,将代码改为,待会儿给手机运行

# !/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Created by Pycharm
@python-version 3.8
@author lqh
@time 2022/6/30 12:45
"""import uiautomator2 as u2d = u2.connect('http://0.0.0.0:7912') # 连接手机本地端口
d.screen_off()  # 关闭屏幕

假如上述文件名为demo1.py,接着将demo1.py 复制到手机上去。

手机端运行

点击文件,你可以随便创建文件夹和文件

我创建了一个my_pro的文件夹,然后我要把demo1.py复制过去

观察上述文件夹的路径,它是: /storage/emulated/0/Android/data/indi.czc.qpython/my_pro
通过数据线使用adb push到手机,在cmd中输入如下命令

adb push C:\Users\xxxx\pro\demo1.py /storage/emulated/0/Android/data/indi.czc.qpython/my_pro

QPython中打开如下,现在还运行不了,因为没有库

长按终端,使用shell终端,我们来查看系统环境变量
输入env,发现有两处不在data文件夹下(需root权限才能修改),可观察到PYTHONPATH里面有一个就是刚刚创建文件的地方,我们这里放site-packages,

把库复制过去,同样使用adb push 命令

adb push C:\Users\xxx\pro\Lib\site-packages\. /storage/emulated/0/Android/data/indi.czc.qpython/lib/python3.10/site-packages

不需要尝试的

此时去运行demo1.py,PIL报错如下:

我原先想着先用QPYPI终端把Pillow卸载了,再使用shell终端重新下载

python3 -m pip install --upgrade pip
python3 -m pip install --upgrade Pillow

但是安装失败

换个思路

不能直接用windows电脑上的PIL库,我感觉应该是不同系统编译的库文件不兼容,还是直接去下载别人编译好的吧
QPython 3C 3.6.3 · 乘着船/QPython 3C - Gitee.com到作者的链接下下载科学计算包,里面有numpy、matplotlib、Pillow等。下载完后解压到手机任意文件夹里,使用shell终端cd到此文件夹下,再使用Python运行setup.py,即输入命令python setup.py,该脚本会先卸载你下载的科学计算包,再复制压缩包里的科学计算库文件到你的手机python库目录下
此时运行uiautomator2已经不会报错,demo1.py脚本可以运行,代码如下

# !/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Created by Pycharm
@python-version 3.10.5
@author lqh
@time 2022/6/30 12:45
"""import uiautomator2 as u2
d = u2.connect('http://0.0.0.0:7912') # 连接手机本地端口
d.app_start('com.tencent.mm') # 打开微信
d.screen_off()  # 关闭屏幕

使用图像匹配

(此功能似乎还处于测试阶段)
同样以微信为例,任务是打开腾讯新闻,然后点击设置,如下图

我们用手机的照片裁剪(手机的照片似乎和电脑的图片有差别)功能,先把此图标裁剪下来,如图:

我们先用电脑测试一下,同样注意手机数据线连接电脑,打开开发者选项(好像也不是必须的),然后adb devices连接上了手机。

把上面的图标发送到电脑,假如说我把它保存到了桌面,它现在的路径是C:\Users\Itrains\Desktop\setting1.jpg

我们电脑编写如下代码:

# !/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Created by Pycharm
@python-version 3.8
@author lqh
@time 2022/7/1 10:19
"""import uiautomator2 as u2d = u2.connect("序列号")
d.implicitly_wait(40.0)  # 最长等待时间,也可以通过d.settings['wait_timeout'] = 10.0 修改,默认10.0
d.app_stop('com.tencent.mm')  # 先关闭微信
d.app_start('com.tencent.mm') # 再启动微信
d(text='腾讯新闻').click()   # 点击腾讯新闻,建议使用WEditor来获取此代码,具体参见uiautomator2的github文档
imdata=r"C:\Users\Itrains\Desktop\setting1.jpg"
print(d.image.match(imdata))    # 置信度大于0.9的才会返回
d.image.click(imdata, timeout=20)

运行前,这里首先要注意一点,就是微信加载好后,腾讯新闻的公众号必须要是在屏幕中能够看到,否则,你需要手动划到那个能看到它的位置

运行,findit未找到,报错如下:

C:\Users\Itrains\Desktop\mycode\python\project_adb\pro\Scripts\python.exe C:/Users/Itrains/Desktop/mycode/python/project_adb/pro/demo2.py
Traceback (most recent call last):File "C:\Users\Itrains\Desktop\mycode\python\project_adb\pro\demo2.py", line 18, in <module>print(d.image.match(imdata))    # 置信度大于0.9的才会返回File "C:\Users\Itrains\Desktop\mycode\python\project_adb\pro\lib\site-packages\uiautomator2\image.py", line 253, in matchfi = findit.FindIt(engine=['template'],
NameError: name 'findit' is not defined

这是因为在源码中findit被注释了,把注释去掉即可运行

还有就是手机端不能运行上述代码,因为无法使用cv2,目前作者似乎还没有推出支持的cv2库,科学计算包也是最近才发布的。

常见问题

报错如下

thon/my_pro/demo1.py" && exit           < [W 220701 11:58:47 __init__:218] [pid:565 7] atx-agent has something wrong, auto re covering
Traceback (most recent call last):File "/storage/emulated/0/Android/data/ indi.czc.qpython/lib/python3.10/site-pack ages/adbutils/_adb.py", line 61, in _safe _connectreturn self._create_socket()File "/storage/emulated/0/Android/data/ indi.czc.qpython/lib/python3.10/site-pack ages/adbutils/_adb.py", line 53, in _crea te_sockets.connect((adb_host, adb_port))
ConnectionRefusedError: [Errno 111] Conne ction refusedDuring handling of the above exception, a nother exception occurred:Traceback (most recent call last):File "/storage/emulated/0/Android/data/ indi.czc.qpython/my_pro/demo1.py", line 1 3, in <module>d.app_start('com.tencent.mm')File "/storage/emulated/0/Android/data/ indi.czc.qpython/lib/python3.10/site-pack ages/uiautomator2/__init__.py", line 1429 , in app_startinfo = self.app_info(package_name)File "/storag


打开手机上下载的ATX,可以看到

这时cmd中要输入python -m uiautomator2 init 或者 uiautomator2 init(注意系统要能找到uiautomator2.exe)

QPython+uiautomator2安卓手机自动化脚本编写相关推荐

  1. 自动化脚本编写-python

    自动化脚本编写实例 打开浏览器访问pto 登陆 修改管理员密码 单元测试数据 检查输入的数据合法性 获取输入错误数据之后的页面提示语 编写测试用例 编写单元测试类 1 单元测试中的通用操作 2 测试类 ...

  2. 自动化脚本编写实例-python

    自动化脚本编写实例 打开浏览器访问pto 登陆 修改管理员密码 单元测试数据 检查输入的数据合法性 获取输入错误数据之后的页面提示语 编写测试用例 编写单元测试类 1 单元测试中的通用操作 2 测试类 ...

  3. 安卓三维展示源码_手机(安卓)自动化脚本开发线上培训

    7月份新增内容: 一.[autojs协议教程] 第一部分:HTTP教程 1.1.HTTP概念介绍1.2.HTTP消息结构1.3.HTTP请求方法1.4.HTTP请求方法1.5.HTTP状态码 第二部分 ...

  4. python安卓自动化脚本_Autojs-用JavaScript实现自己的安卓手机自动化工具脚本

    Apple iPhone 11 (A2223) 128GB 黑色 移动联通电信4G手机 双卡双待 4999元包邮 去购买 > 我是风筝,公众号「古时的风筝」,一个不只有技术的技术公众号,一个在程 ...

  5. python写安卓游戏辅助软件_GitHub - Jinnrry/RobotHelper: 安卓游戏自动化脚本框架|Automated script for Android games...

    RobotHelper 这是做什么的? 一个安卓自动化脚本的框架.包含了自动化辅助开发常用的点击,找点,文字识别等功能.具体开发说明参见 wiki 该框架主要是方便Android游戏.爬虫项目的快速开 ...

  6. python自动化脚本编写教程_开发工具pycharm写第一个Python自动化程序案例|python基础教程|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. ...

  7. GDB自动化脚本编写笔记一

    Author:ZERO-A-ONE Date:2019-12-24 作为UNIX/Linux下使用广泛的调试器,gdb不仅提供了丰富的命令,还引入了对脚本的支持:一种是对已存在的脚本语言支持,比如py ...

  8. 安卓手机自动化一些工具的简单介绍

    工具1Monkey: 工具介绍:Monkey是一个程序,运行在您的模拟器或设备上,并生成伪随机的用户事件流,如点击,触摸或手势,以及一些系统级事件. 您可以使用Monkey以随机但可重复的方式对您正在 ...

  9. python 手机自动化脚本_iOS python自动化出包脚本

    脚本代码如下: #!/usr/bin/python # -*- coding:UTF-8 -*- import os import sys import time # 发邮件所用 from email ...

最新文章

  1. python画樱桃小丸子的程序_多任务---线程threading使用总结。
  2. postgresql点云las_点云模型_点云模型_模型_时空数据库_PolarDB PostgreSQL 云原生数据库 - 阿里云...
  3. 计算机软件应用员,济宁计算机办公应用软件操作员
  4. Java基础(一)——基本语法
  5. python中filter(),reduce()函数
  6. ios html转json,iOS 中 Model 和 JSON 互相转换
  7. 1次订单事故,扣了我3个月绩效!
  8. 第2节 网站点击流项目(下):5、访客分析
  9. Oracle下载和安装教程
  10. Get Server Down when retrieve the channel list in sopcast, how to solve it?
  11. springboot集成socket.io通过jwt-token身份认证鉴权
  12. python 多线程爬虫下载中图分类号
  13. 当小米MIX 2遇到iPhone X 你会怎么选?
  14. cacheable 表达式_Spring Boot缓存注解@Cacheable、@CacheEvict、@CachePut使用
  15. 金蝶云苍穹集成,苍穹到eas审核反审核
  16. 我的世界斗罗封神服务器怎么注册,我的世界斗罗封神服务器-我的世界斗罗封神mod手机版v1.17.2.01-游戏宝手游网...
  17. 秀米怎么用html模板,秀 米 模 板 不 够 用 ?
  18. idea如何选择性合并其他分支的代码
  19. Mac键盘不起作用?苹果电脑键盘失灵解决教程
  20. Python与金融:为什么将Python用于金融

热门文章

  1. 史上最详尽的RGB-D传感器选型调研报告
  2. Qemu gdb 调试 Liteos realview-pbx-a9 工程
  3. IOS sqlite3 使用简单介绍 使用简单介绍
  4. 求生之路显示服务器列表指令,求生之路2指令大全 所有可用指令一览_游戏狗
  5. 新一代容器技术———Podman
  6. Spring Boot入门系列(六)Spring Boot如何整合Mybatis【附详细步骤】
  7. 实录:HBA卡速率设置错误导致服务器无法识别存储
  8. 使用jquery validate结合zui作表单验证
  9. 网络协议 11 - Socket 编程(下):眼见为实耳听为虚
  10. Arduino智能小车设计(一)