上文讲了 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~