浅谈如何使用Python控制手机(一)
作者:苏苏与阿言 发布时间:2023-03-11 14:18:47
目录
1. 配置Python环境变量
2. 安装Python编辑器,并在其中配置Python
3. 安装控制包uiautomator2,和其它辅助包
4. 安装adb
5. adb调用
6、设备安装ATX
7. 编写Python代码进行控制手机
8. 更多使用方式
9. weditor调试工具
总结
1. 配置Python环境变量
Python环境变量安装较为简单,比较常用的方式是直接百度Anaconda并且下载安装,安装过程中可直接选择自动配置环境变量,在此不再赘述。
2. 安装Python编辑器,并在其中配置Python
编辑器常用的是PyCharm,属于和IDEA一家公司的软件,这个软件对于学生有免费优惠,大学生可以直接去它官网申请,好像是需要一年一申,当然不缺钱的话也可以直接购买。
3. 安装控制包uiautomator2,和其它辅助包
安装完后,想要控制手机,还需要安装一个Python包uiautomator2,直接使用命令行中的pip安装即可。
# GitHub地址:
# https://github.com/openatx/uiautomator2
pip install uiautomator2 # 这个包是用于控制手机
pip install pillow # 这个包用于截图
pip install -U weditor # 这个包是可以调试,在浏览器页面上直观的获取某个控件名称
4. 安装adb
adb全称叫做android调试桥(Android Debug Bridge),是Android官方谷歌公司开发的连接电脑与手机的插件,一般来说是包含在Android Studio之中下载的,当然我们在此处用不到Studio的其它功能,因此只下载adb包即可。
下载链接如下:
SDK Platform Tools 版本说明
这个链接下载的名称叫做Platform Tools,其中是包含adb工具的,其名称为adb.exe,与之相关的还有几个以ADB开头名称的文件。将此压缩包解压之后,放在系统的任意位置,然后将此位置加入Path环境变量即可。这样我们就可以在系统的任意位置调用到此exe文件。
5. adb调用
将手机通过USB数据线连接至电脑,打开开发者模式,并开启USB调试,并且开启允许电脑通过USB向手机安装软件等权限。接收电脑发来的链接秘钥并链接。
(使用Python包uiautomator2控制手机时,需要在手机上安装app)
在电脑中使用WIN+R弹出运行框,在框内输入cmd调用命令行窗口。在窗口中输入如下命令:
adb devices
窗口会打印当前USB所连接的手机信息,如果没有手机连接,将会显示如下信息,这时需要检查手机连接的USB线是否正常,并且检查开发者模式是否打开等等。当然如果直接报错找不到adb命令,则需要检查adb相关配置是否完成。
C:\Users\Administrator>adb devices
List of devices attached
C:\Users\Administrator>|
如果完全正常,且手机已经链接,则将会显示如下信息:
C:\Users\Administrator>adb devices
List of devices attached
9phqaetw device
afdsaf4 device
C:\Users\Administrator>|
在List of devices attached这一行之后,有几行信息,便说明已经有几个设备已经链接到ADB调试桥,而在每一行开头,device之前的那一串字符串,便是设备的标志码。通过设备的标志码,我们就可以链接到指定的设备,当然如果本台电脑上只链接有一块手机,此标志码可以不记,如果链接有多块手机,则需要记录每一个标志码,以及标志码对应的实际手机设备。
如果不知道哪个标志码对应哪台设备,则可以将其中一个USB拔出,再输入命令,反复查看,以此确认标志码与设备之间一一对应的关系。
6、设备安装ATX
在命令行执行如下命令,在手机上安装ATX软件。如果手机上没有安装此APP,uiautomator2将无法控制手机。
python -m uiautomator2 init
7. 编写Python代码进行控制手机
比较简单的控制方式是:
# 引用uiautomator2包
import uiautomator2 as u2
# 使用设备唯一标志码链接设备,其中9phqaetw是通过adb获取的设备标志码
d = u2.connect('9phqaetw')
# d = u2.connect() # 当前只有一个设备时可以用这个
d.unlock() # 解锁屏幕
x,y = 100,100
d.click(x,y) # 点击屏幕坐标为 x,y 的点
# 双击屏幕
d.double_click(x,y)
# 长按
d.long_click(x,y)
# 单机屏幕上字符为9的控件
d(text="9").click()
例如我们写一个比较简单的解锁屏幕代码,假设锁屏密码是486570:
# 引用uiautomator2包
import uiautomator2 as u2
import time
# 使用设备唯一标志码链接设备,其中9phqaetw是通过adb获取的设备标志码
d = u2.connect('9phqaetw')
# d = u2.connect() # 当前只有一个设备时可以用这个
d.unlock() # 解锁屏幕
time.sleep(2) # 等待手机反应2秒钟
# 锁屏密码
password = "486570"
# 输入锁屏密码
for c in password:
d(text=c).click()
time.sleep(0.3) # 间隔0.3秒单击一次屏幕
8. 更多使用方式
上述代码运行成功后,基本上就可以控制手机了。uiautomator2具备较多功能,在此不再赘述,百度具有较多资料。
9. weditor调试工具
weditor用于查看手机当前状态、用浏览器控制手机、调试手机,还可以实时的查找控件中的text属性以及其它属性值等等。
第一种打开方式是在命令窗口输入:
python -m weditor
第二种方式是在桌面创建快捷方式,在命令窗口输入:
weditor --shortcut
在桌面会自动创建一个名为WEditor的图标,双击即可。
打开weditor后会出现一个信息调试框,并且会自动打开默认浏览器跳转至调试页面,关闭调试框和浏览器页面其中任一个,weditor即被关闭。注意如果默认浏览器为IE的话,不知道支持与否,或可自行尝试。调试页面如下图所示:
在顶部可以切换静态调试还是实时,如果是实时情况下,则会跟随手机进行实时界面切换。
最左侧为手机界面;中间根据点选屏幕空间的不同,显示不同的控件属性;最右侧可使用Python代码进行书写和调试。
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
来源:https://blog.csdn.net/weixin_40901068/article/details/121242489
猜你喜欢
- ASP结合ADO对数据库方便快捷的访问、结合XML、COM/ActiveX等其它技术 实现服务器多层结构的功能使它在今天还有着顽强的生命力。
- IE在处理透明度上真够恶心,而且在IE7必须让元素的hasLayout为ture,要不会失效。以下是我最新处理透明度的代码:var 
- strSourceFile = Server.MapPath(dataXML&"/Advertisement/"
- 原来的语句是这样的: select sum(sl0000) from xstfxps2 where dhao00 in ( select d
- 1、二维数组声明方式是下面这样的:var images=new Array(); //先声明一维 for(var i=0;i<10;i
- golang 原生 http 库已经可以很方便地实现一个 http server 了,但对于复杂的 web 服务来说,路由解析,请求参数解析
- 本文主要给大家介绍了关于 Python中的字符串操作和编码Unicode的一些知识,下面话不多说,需要的朋友们下面来一起学习吧。字
- meta是用来在HTML文档中模拟HTTP协议的响应头报文。meta 标签用于网页的<head>与</head&
- 下面这段代码,你知道有哪些错误吗:var g_bar = "bar";function foo(container, c
- 如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第四个自然段。以下叙述的脚本包括服务器端脚本和客户端的脚本,服务器端脚本指在服务器上
- 斐波那契记忆优化法:<script type="text/javascript">var fibonacci
- Google中秋的logo出来了,酷似一美男站在月亮上,结果被网友弄出一撒尿版来。中国网民好智慧啊~原logo: 撒尿版logo:
- 记得有一期ucdchina书友会里面,聊过一次大家的工作习惯问题,现在回想起来很有意思,特整理这篇文章分享给大家。关于photoshop1
- 本文列举了所有关于PHP语言中使用socket相关服务的一些函数。注意使用如下函数之前,你需要确保你的socket已打开,如果你没有打开,请
- What's more important to your web site: pictures or text? If you h
- 在Python2中datetime对象没有timestamp方法,不能很方便的生成epoch,现有方法没有处理很容易导致错误。关于Epoch
- 导读:SQL Server数据迁移的知识之前已经为大家介绍了很多,比如SQL Server数据库迁移方法,接下来就为大家详细介绍SQL Se
- 两张表 组织架构表(Organise) 和 工资发放历史记录表 (WagePerMonthHis) 两张表通过 Organise.Item_
- 阅读:Chapter 3 * 的表格“Misquotations are the only quotations tha are never
- /* 功能: 通用分页存储过程 参数: @PK varchar(50), 主键,用来排序的单一字段,空的话,