京公网安备 11010802034615号
经营许可证编号:京B2-20210330
作者:星安果
来源:AirPython
前几天,有一个小姐姐私聊我,说她每次打开微信,界面上密密麻麻的红点提示让她很惆怅,每一条消息她都要一条条去点击,太费时间且焦虑了
本篇文章将以之前聊过的python的UiAutomator2 编写自动化脚本,来帮小姐姐解决这个问题
准备
在开始实战之前,需要做如下准备:
1、在 PC 端配置 Android 开发环境
2、安装依赖库及应用
其中:
uiautomator2 负责自动化;weditor 负责连接设备,查看应用的界面元素
# 安装依赖 pip3 install -U uiautomator2 # 如果需要截屏,需要安装pillow pip3 install pillow # 安装weditor,实时查看 App 的界面元素信息 pip3 install -U weditor
3、在手机上安装 atx-agent 应用
# 安装apk服务到手机上 python -m uiautomator2 init
实战
在实战之前,在命令行输入 weditor命令,浏览器会自动打开设备管理页面
查看手机的 ip 地址,通过 ip 地址 连接设备后,界面会展示当前设备界面的元素信息
1、打开微信 App
在局域网下通过 IP 地址连接设备,然后通过微信 App 的包名打开应用
import uiautomator2 as u2
# 微信App的包名
PACKAGE_NAME = 'com.tencent.mm'
# 连接设备
self.device = u2.connect('192.168.0.101')
# 获取屏幕的宽、高度
self.width, self.height = self.device.window_size()
# 利用应用包名打开App
self.device.app_start(PACKAGE_NAME, stop=True)
2、等待主页加载完成
由于上面冷启动 App 比较耗时,这里需要进行等待主页的页面元素加载完成
利用 WEditor 定位获取底部 Tab 的元素 ID,然后利用「 ID + 文本内容 」定位到 Tab 控件,通过设置一个最大超时时间,一直等待查询控件成功为止
def __wait_home_appear(self):
"""
等待主页加载完成
:return:
"""
self.device(resourceId='com.tencent.mm:id/cns', text='微信').wait(timeout=20)
self.device(resourceId='com.tencent.mm:id/cns', text='通讯录').wait(timeout=20)
self.device(resourceId='com.tencent.mm:id/cns', text='发现').wait(timeout=20)
self.device(resourceId='com.tencent.mm:id/cns', text='发现').wait(timeout=20)
print('首页加载完成')
3、判断是否存在未处理消息
和上面一样,使用 WEditor 获取顶部 Tab 未读消息控件的文本内容
如果文本内容不为空,那么代表存在未处理的消息;否则,直接退出程序即可
def __has_unread_msg(self): """ 是否有未读的消息 :return: """ try: number_unread_msg = self.device(resourceId='com.tencent.mm:id/gik') return number_unread_msg.get_text() != "" except Exception: return False
4、查找未处理消息进行处理
在当前界面查找消息列表,筛选出头像右上角包含数字的控件
如果查找的元素不为空,并且文本内容为整形且大于 0,则模拟执行一次点击操作,然后返回到主页面
# 未处理消息控件
element = self.device(resourceId='com.tencent.mm:id/ga3', instance=0)
if element.exists and self.__is_number(element.get_text()):
# 存在未处理的消息
element.click()
if not self.__is_home_page():
# 返回到主页面
self.device.press('back')
else:
# 不存在未处理的消息
pass
5、查找与定位优化
有 2 种方式去查找定位所有未读的消息,分别是:
这里更推荐后者,因为第二种方式更加稳定精确,而且支持循环定位查找
我们获取到底部 Tab 控件的中心点坐标,使用 double_click() 指定两次点击的时长为 0.05s,模拟快速点击两下
def click_twice_quickly(device, element): """ 快读点击两下 :param device: :param id: 控件ID :return: """ bounds = element.bounds() center_x, center_y = ((bounds[2] + bounds[0]) / 2, ((bounds[3] + bounds[1]) / 2)) print(center_x,center_y) device.double_click(center_x, center_y, 0.05)
6、循环操作
只需要循环判断是否存在未处理的消息,如果存在,就快速点击底部 Tab 定位到未读的消息项进行一次阅读操作,直到不存在未处理的消息为止
while True:
# 存在未读消息
if self.__has_unread_msg():
# 连续点击两下,快速定位
click_twice_quickly(self.device, element)
# 处理未读消息
pass
# 没有未读消息
else:
logger.debug('没有可读的消息了,退出!')
break
最后
通过上面的实例,我们处理了首页消息的所有未读消息;至于通讯录、朋友圈、个人消息的提示,可以按同样的方式去处理
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在数据指标体系搭建工作中,从业者常困惑于指标搭建的核心逻辑:究竟是依托一线零散数据自下而上汇总指标,还是基于战略目标自上 ...
2026-07-31在数据分析、问卷研究、实验复盘、业务建模的工作中,大多数人最关注的是“用什么统计方法”:是做T检验、方差分析、卡方检验, ...
2026-07-31 许多数据分析师精通Excel函数和SQL查询,但当面对一张上万行的销售明细表,要快速回答“哪个地区销量最高”“哪款产品增长最 ...
2026-07-31在问卷调研的数据分析流程中,“先检验信效度,再开展进阶统计分析”是通用的规范逻辑。很多从业者会听到“问卷效度高,后续可以 ...
2026-07-30【核心关键词】大数据、统计学、专业、毕业生、论文、课程、计算机、建模、知识、数据分析、机器学习、数据科学、大数据技术、 ...
2026-07-30 很多数据分析师掌握了Excel函数、会写SQL查询,但当被问到“数据从哪里来”“数据加工有哪些步骤”“如何使用分析工具连接数 ...
2026-07-30在业务数据分析中,按天拆分统计夜间时段的数据是高频需求——比如电商夜间订单监测、平台夜间用户活跃度分析、运维系统夜间异常 ...
2026-07-29在机器学习建模与特征工程实践中,判断不同特征对模型预测效果的贡献度,是特征筛选、模型解释、业务归因的核心环节。特征置换重 ...
2026-07-29 很多数据分析师精通Excel单元格操作,但当被问到“表结构数据的基本处理单位是什么”“字段和记录的本质区别”“为什么表结 ...
2026-07-29【核心关键词】岗位、数字化、经验、课程、方法论、决策、企业、大方向、数据分析、销售管理、理论知识、思维方式、分析销售、 ...
2026-07-28在问卷调研、用户分群、效果对比等业务数据分析中,分类变量的关联性与差异性验证是高频需求。卡方检验作为针对离散分类数据的经 ...
2026-07-28 数据分析师八成以上的时间在和数据表格打交道,但许多人拿到Excel后习惯性地先算、先分析,结果回头发现漏了一列关键数据, ...
2026-07-28在Excel数据分析与报表制作中,数据透视表是快速完成多维度汇总、分组统计的核心工具。很多从业者在得到透视表汇总结果后,为了 ...
2026-07-27 很多数据分析师每天与Excel打交道,但当被问到“表格结构数据的基本处理单位是什么”“数据类型误判会引发哪些分析错误”“ ...
2026-07-27当下,我们已然步入数据要素价值全面释放的智能时代。数据不再只是零散的数字记录,更是驱动新质生产力运转的核心动能、滋养人工 ...
2026-07-27【核心关键词】客户、数据分析、指标体系、数据采集、数据指标、业务数据、分析思路、业务需求、分析方法 【专访摘要】本次 CDA ...
2026-07-24在数据分析、业务建模与数字化运营体系中,原始业务数据普遍存在缺失、重复、异常、口径不一致等质量问题,直接用于分析与建模会 ...
2026-07-24 很多数据分析师能熟练计算均值、标准差,但当被问到“如何用一张图让业务方3秒内看懂核心结论”“面对不同数据类型该怎么选 ...
2026-07-24在数据驱动的精细化运营体系中,指标是业务判断、效果复盘、策略优化的核心依据。随着企业数据化程度提升,指标数量持续膨胀,但 ...
2026-07-23在用户运营与产品增长体系中,留存是衡量产品真实价值与用户粘性的核心标尺,也是决定用户生命周期价值、获客投产比的底层因素。 ...
2026-07-23