需求:
近期有朋友找我,让我做一个定点抢票的脚本给她,大概的需求如下:
如:大麦app准点抢票(如6月18日13点00分抢票告五人livehouse)
如下:
![](https://i-blog.csdnimg.cn/blog_migrate/dd25d38ea7e0566b1d5f17f3d74461c4.jpeg)
分析
在想到操作手机的工具时,我大致想到了appium和UIAutomator2。
考虑到appium环境的部署很复杂(在大学的时候参加比赛装过,出来工作之后就没接触了),后面选择了用UIAutomator2框架。
UIAutomator2环境安装过程详解
1.安装uiautomator2。打开cmd,输入:pip install –pre uiautomator2。
校验可以使用命令pip show uiautomator2,可以看到下面的版本号。
2.手机设置。用USB手机连接电脑,连接电脑我们要打开“开发者工具”,允许
这部手机和电脑连接。目的是为了后续初始化的时候在手机安装ATX软件。
![](https://i-blog.csdnimg.cn/blog_migrate/f049ee24f3ffcc514c3a052be2057386.jpeg)
3.检验连接。为了验证是否连接成功,我们可以在打开cmd,输入命令:adb
dervice,可以看到有一个连接设备的设备号,说明我们手机和电脑连接上
了。
![](https://i-blog.csdnimg.cn/blog_migrate/43e45cc86235856522e03bf3d2b33ada.png)
4.初始化脚本。打开cmd,输入python –m uiautomator2 init ,查看是否成功,
可以看到日志成功以及手机上会有安装ATX软件(翻译脚本)
![](https://i-blog.csdnimg.cn/blog_migrate/79a99498f5694a50348fe99c87712248.jpeg)
5.安装可视化UI查看器—Weditor。打开cmd,输入pip install –pre –Uweditor,
安装成功后会显示下图:
6.打开webditor命令:python –m weditor,这时会自动打开一个浏览器。
7.编写脚本。定时点击按钮,我用的是datetime库,就精确到毫秒,当然也可
以用time库。下面的脚本很简单,就不需要讲解了吧。
import uiautomator2 as u2
import datetime
# 开抢的时间
times = '2022-06-18 13:59:53'
d = u2.connect(addr='TTNDU20A09003047')
while 1 ==1:
#精确到微秒
a = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")
#精确到秒
# a = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
print('抢到票的时间是:'+a)
if a > times:
while 1 ==1:
try:
# 连接并启动
#经过测试,坐标定位法比其他方法花费时间短
d.click(0.633, 0.955)
d.click(0.713, 0.958)
d.click(0.92, 0.52)
d.click(0.8, 0.96)
break
except:
pass
这个脚本做的很粗糙,大概用了半个小时。
![](https://i-blog.csdnimg.cn/blog_migrate/cf8964902dababd05a3b2ba3031c86ac.jpeg)
但是,在编写大麦网抢票的过程中,我发现了以下几个问题,可以思考:
注意点:
1.大麦网的倒计时时间与北京时间不符。(蛋疼,倒计时时间跟我们设计的
不一样,慢了4秒多,导致不能第一时间抢)
2.选用哪种定位方式更快。Text比坐标点击慢。
3.怎样解决UI反应慢的问题。
好了,最后附上该工具的各自方法链接(别的大神):
https://blog.csdn.net/adorable_/article/details/121998945
安装遇到什么问题可以在底下留言探讨。
.