使用python来进行手机自动化操作的方法
这篇文章将为大家详细讲解有关使用python来进行手机自动化操作的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
2019双十一,tb推出了新的活动,商店喵币,看了一下每天都有几个任务来领取喵币,从而升级店铺赚钱,然而我既想赚红包又不想干苦力,遂使用python来进行手机自动化操作,目测全网首发!
用到的库:
·re
·os
·time
思路:
(1)下载adb命令安装包
(2)打开手机开发者选项(点击系统设置,连点5次系统版本,即可在辅助功能或其他选项中找到开发者选项,此功能无害,可不必关闭)
(3)在开发者选项中找到USB调试打开(反是有USB字样选项的全部同意,有提示风险也同意,PS:自己操作鸡毛风险没有,在一些商厦的有免费充电桩,若此充电桩提示请求USB调试请拒绝,此行为是风险操作,有可能获取隐私!)
(4)手机连接电脑(部分手机在仅充电模式下无法连接)
(5)调至tb喵币做任务界面
(6)将.py文件移动至adb文件夹目录下
(7)在开发者界面下打开指针位置
(8)填入X,Y坐标
(9)运行脚本
importos,reimporttimeprint('-----ctrl+c终止程序-----------')task=int(input('请输入任务个数:'))chose=int(input('请选择自定位[1]或手动输入[2]:'))print('author:刘秉哲')list=[]list1=[]defgo(x,y):foriinrange(task+1):os.system('adbshellinputtap{}{}'.format(x,y))#触摸店铺按钮print('---开始任务---')time.sleep(4)os.system('adbshellinputtap{}{}'.format(1,1))#模拟滑动界面print('---等待25秒---')time.sleep(25)print('---领取完成---')time.sleep(4)os.system('adbshellinputkeyevent4')time.sleep(4)#os.system('adbshellinputtap5182202')print('第{}任务领取完成'.format(i+1))print('______________________')defgo_2():try:print('获取坐标中')file=os.listdir('.')ifos.path.exists('123.txt'):#if(i.endswith('.txt')):#判断当前文件是否有123.txtc=open('123.txt',encoding='UTF-8')a=c.read()#正则寻找去进店的按钮位置d=re.search('<nodeindex="2"text="去进店"(.*?)/>',a).groups()f=re.search('bounds="(.*?)"',str(d)).groups()g=re.search('\[(.*?)\]',f[0]).group(1)list.append(g.split(','))#将坐标添加到列表else:try:#这里两次获取xml,以防获取的第一个为安卓非IDE情况下的xmlos.system('adbshelluiautomatordump/sdcard/ui.xml')time.sleep(2)os.system('adbshelluiautomatordump/sdcard/ui.xml')os.system('adbpull/sdcard/ui.xml123.txt')size=get_FileSize('123.txt')#123.txt是淘宝喵币任务页面的布局ifsize>=0.03:#第一次获取ui会出现文件非淘宝苗币的xmlfile=os.listdir('.')c=open('123.txt',encoding='UTF-8')a=c.read()d=re.search('<nodeindex="2"text="去进店"(.*?)/>',a).groups()f=re.search('bounds="(.*?)"',str(d)).groups()g=re.search('\[(.*?)\]',f[0]).group(1)list.append(g.split(','))print('获取成功')else:print('xml文件错误正在重新下载,请勿翻动手机界面')os.remove('123.txt')go_2()except:print('错误')go_2()except:print('error,正在重新获取')defget_FileSize(filePath):fsize=os.path.getsize(filePath)fsize=fsize/float(1024*1024)returnround(fsize,2)ifchose==1:try:go_2()print("当前坐标:{},{}".format(list[0][0],list[0][1]))go(int(list[0][0])+20,int(list[0][1])+20)except:print('error')ifchose==2:x=int(input('请输入任务X坐标:'))y=int(input('请输入任务y坐标:'))go(x,y)
PS:代码部分命名仓促,见谅。
1. 脚本1功能自动获取下X,Y坐标,大概率成功,小概率需要自行通过2功能修改。
2. 脚本还有不足之处,欢迎指出。
3. 123.txt是当前淘宝喵币页面的安卓布局,里面有当前的布局及其按钮位置 。
4. 当你想为另一台手机在同一台电脑上运行的时候,请手动删除123.txt,手机型 号不同,布局不同。
问题与难点:
1. 实现tb按钮的自定位;
2. 小几率出现返回任务界面 20个任务会消失(网速和手机性能影响);
3. 部分手机会出现坐标定位后,手机无反应,请根据提示的当前坐标,选择2功能,然后将坐标数增减10进行调试;
4. error: device not found :手机没有正确连接至电脑(检查adb);
5. 检查当前文件夹下的123.TXT 的大小是否在30KB以上,在10KB一下说明获取失败,删除123.txt,重新打开软件获取(未知bug);
6. ERROR: null root node returned by UiTestAutomationBridge. 安卓P以上的bug 请多次开关程序;
7. 脚本不可与adb文件夹(platform-tools)分离,否则无法运行;
8. 出现闪退请多次开关程序。
2功能可以用于20个任务下面的其他浏览任务,坐标可在123.txt中找到也可在开发者指针位置定位,这里不在赘述。
这里也有封装成exe的,可直接使用,欢迎体验:
https://www.lanzous.com/i71giqd
adb组件单独下载:
https://www.lanzous.com/i71gllg
关于使用python来进行手机自动化操作的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。