上文讲了 uiautomator2 环境搭建,介绍中也讲了,uiautomator2比较大的优点是可以通过电脑直接运行命令,让手机执行动作,本身是基于python实现的,我们就可以借用python平台上强大的扩展库,实现各种自动化测试功能,甚至借用AI实现智能化测试等等。
当然,除了自动化测试我们还可以“学以致用”搞点别的,比如写个游戏辅助脚本外挂,这几年要说最火的页游改手游最成功点案例非 “贪玩传奇” 莫属,跑到哪里都能看到 古天乐、郭富城、谢霆锋等各路男神邀请你玩“真传奇”,跑出个达叔非要找你回收元宝,广告洗脑效果比当年脑白金有过之无不及。
我就被好奇心勾住了,下载了一个传奇来体验体验,玩了几天,发现做任务真累。怎么办呢,时间不够,技术来凑。。废话不多说,开发走起。
首先当然是启动weditor, adb wifi通过连接手机python -m weditor
adb connect 192.168.1.101
连接之后,我们dump 一下UI布局
可以看出,基本上我们是无法通过id等查找到控件内容的,那么我就只能用最原始的方式了,通过查找坐标点,模拟按键效果,达到辅助我们做任务目的,索性通过wedtior 我们动态取点那是相当方便啊。。鼠标放图标上,点下就点就出来了,首先我们就来模拟下竞技任务
通过取点,测试代码如下
#执行竞技任务
#点击竞技图标
d.click(0.93, 0.556)
time.sleep(3)
#开始竞技
d.click(0.83, 0.384)
time.sleep(30)
d.click(0.921, 0.962)
丢到weditor运行一下,立马就看下效果了。。一次简单的任务就完成了
当然,既然是辅助脚本,那么肯定设计到轮训、定时执行任务链,那么在python中如何实现一个简单的任务链呢。
答案是通过 functools 来实现
比如,我们可以建立一个 LegendJobMangage.py 文件来专门构建我们任务链
import datetime
import functools
import schedule
jobList = []
# 竞技
def jinji():
‘‘‘
实现竞技功能
:return:
‘‘‘
print((datetime.datetime.now() + datetime.timedelta(seconds=2)).strftime("%H:%M:%S") + " 竞技")
def yewaiBoss():
‘‘‘
:return:
‘‘‘
print((datetime.datetime.now() + datetime.timedelta(seconds=2)).strftime("%H:%M:%S") + " 刷野外boss")
def shenyuBoss():
‘‘‘
:return:
‘‘‘
print((datetime.datetime.now() + datetime.timedelta(seconds=2)).strftime("%H:%M:%S") + " 刷神域boss")
#顺序执行任务链中任务
def excuteJobList():
for i in range(len(jobList)):
jobFun = functools.partial(jobList[i])
fun = functools.update_wrapper(jobFun, jobList[1])
fun()
if __name__ == "__main__":
#定时任务链接
jobList.append(jinji)
jobList.append(yewaiBoss)
jobList.append(shenyuBoss)
#指定某个时间执行任务链
schedule.every().day.at(‘08:00‘).do(excuteJobList)
schedule.every().day.at(‘13:00‘).do(excuteJobList)
schedule.every().day.at(‘17:00‘).do(excuteJobList)
#x秒执行一次
schedule.every(5).seconds.do(excuteJobList)
#excuteJobList()
while True:
schedule.run_pending()
通过functools 顺序执行的list中任务项,达到任务链的目的
核心代码如下
jobFun = functools.partial(jobList[i])
fun = functools.update_wrapper(jobFun, jobList[1])
fun()
执行效果如下
23:01:04 竞技
23:01:04 刷野外boss
23:01:04 刷神域boss
23:01:09 竞技
23:01:09 刷野外boss
23:01:09 刷神域boss
2020年 第二期《python全栈测试开发》网络课程于3月29日开班
一个简单的辅助脚本就这样完成了,为了防止麻烦,案例中只是提供思路和伪代码,如需详细代码,欢迎加QQ群:1085210541
,本次分享就暂时到这里了。
这里我们只用到了定时轮训,玩过游戏的都知道,很多情况下我们都是要去等boss刷新,拼手速刷boss,刷副本,那么我们如何实现智能化,刷怪和boss呢,请关注下次分享
《uiautomator2 + AI 智能图片识别实现抢刷怪,升级打装备快人一步》
欢迎大家点赞、留言、转发来一波,老铁666~
欢迎大家点赞、留言、转发来一波,老铁666~
欢迎大家点赞、留言、转发来一波,老铁666~
原文:https://www.cnblogs.com/luoman/p/12547951.html