0x01 缘起
疫情结束的2023年5月,大家对出去玩都有点疯狂,歌手们也扎堆开演唱会。但演唱会多,票一点也不好抢,抢五月天的门票难度不亚于买五一的高铁票。所以想尝试找一些脚本来辅助抢票,之前经常用selenium和request做一些小爬虫来搞定自动化的工作,所以在 MakiNaruto/Automatic_ticket_purchase 的基础上改了改,实现抢票功能。但是大麦网实在太狡猾了,改完爬虫才发现几乎所有的热门演唱会只允许在app购买,所以就需要利用APP实现接口自动化。
0x02 Airtest自动化测试
首先想到的是利用对UI的操作实现此功能,目前比较流行的框架是网易的poco和appium,对比了一下发现poco比较简单好上手,而且也基于python语法,因此笔者选择了此框架。
运行环境搭建
- Airtest IDE: poco运行基于网易的Airtest IDE,官网下载解包安装即可
- adb调试: 打开安卓手机的设置中开发者选项的usb调试功能。对于小米和华为手机,还应当允许通过USB安装应用。
配置好后,点击connect即可连接到手机
操作录制
我认为Airtest IDE最方便的地方莫过于自动分析apk窗口的控件,并录制操作,生成代码。如下图,点击poco辅助窗的右上角按钮,即可开始录制。
此时点击设备窗的中对应的控件,即可在左侧的代码窗中自动生成代码。
生成的代码示例
# 点击操作
poco("cn.damai:id/project_poster_mask_iv"