基于Python+Appium实现京东双十一自动领金币功能


Posted in Python onOctober 31, 2019

背景:做任务领金币的过程很无聊,而且每天都是重复同样的工作,非常符合自动化的定义;

工具:python,appium,Android 手机(我使用的是安卓6.0的),数据线一根;

开搞前先让手机和电脑连上同一个无线网;

1.抓取京东APP的包名和Activity

先连接手机 windows+r输入cmd进入命令行页面

输入:adb devices查看设备是否链接;

输入:adb shell pm list package -3查看手机里面的第三方安装包;

很明显可以看出来京东的package是:com.jingdong.app.mall

基于Python+Appium实现京东双十一自动领金币功能

输入:adb shell monkey -v -v -v -p com.jingdong.app.mall 10 ,使用monkey命令运行京东APP在运行日志中找到Activity,(这是我至今为止找Activity最好用的方法,有更好可以留言。)在日志最后面找到包名,包名的“/” 后面就是Activity;

基于Python+Appium实现京东双十一自动领金币功能

2.编写python代码,编写一段打开京东APP的代码;

deviceName默认端口号是5555

from appium import webdriver
desired_caps ={
'platformName':'Android',
'deviceName':'192.168.60.41:5555',#手机ip地址
'platformVersion':'6.0',#Android系统版本
'appPackage':'com.jingdong.app.mall',
'appActivity':'.main.MainActivity'
}
dr=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)#地址为appium地址

3.打开appium,简单设置后开启appium;

基于Python+Appium实现京东双十一自动领金币功能

点击右上角三角开启;

4.使用uiautomatorviewer.bat 工具获取APP内按钮定位;

uiautomatorviewer.bat 工具比较辣鸡,也可能因为我比较辣鸡,就是很多页面获取不到,获取到了也找不到按钮的class,id等等,说以我这里使用的是坐标点击。uiautomatorviewer.bat工具在android-sdk\tools目录下;

eg:基于Python+Appium实现京东双十一自动领金币功能

例如点击全民养红包:TouchAction(dr).press(x=950,y=1530).release().perform()

press(x=x,y=y)里面的填写的是坐标点,这个点坐标需要控制在[543,1461][1053,1617]之内;

5.思路:

点击活动 -- 点击全民养红包 -- 点击领取金币 -- 点击任务 --点击返回 -- 点击领取金币 -- 重定向至点击任务;

详细代码如下(个人自嗨的代码仅供参考):

from appium.webdriver.common.touch_action import TouchAction
from time import sleep
from appium import webdriver
desired_caps ={
'platformName':'Android',
'deviceName':'192.168.60.41:5555',#手机ip地址
'platformVersion':'6.0',#Android系统版本
'appPackage':'com.jingdong.app.mall',
'appActivity':'.main.MainActivity'
}
dr=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)#地址为appium地址
sleep(8)
x=dr.get_window_size()['width']
y=dr.get_window_size()['height']
 
print('点击双11活动')
TouchAction(dr).press(x=813,y=1250).release().perform()
sleep(15)
 
# 点击红包活动[543,1461][1053,1617]
print('点击红包活动')
TouchAction(dr).press(x=950,y=1530).release().perform()
sleep(15)
 
# 点击任务列表[867,1656][1065,1776]
print('点击任务列表')
TouchAction(dr).press(x=950,y=1710).release().perform()
sleep(10)
 
#向上划拉一点点
def swipe_up():
 print('向上划拉一点点')
 x=500
 y1=1500
 y2=1100
 dr.swipe(x,y1,x,y2,500)
 sleep(1)
 
#点击任务,进入详情,返回任务页,点击领取金币
def cleck_rw(NO_,number,size):
 for i in range(number):
  #点击任务
  print('第{}次点击任务{}'.format(i+1,NO_))
  TouchAction(dr).press(x=950, y=size).release().perform()
  sleep(2)
 
  # 返回上一页
  print('返回活动页')
  dr.back()
  sleep(3)
 
  # 点击朕知道了[414,1314][660,1404]
  print('点击朕知道了')
  TouchAction(dr).press(x=550, y=1350).release().perform()
  sleep(2)
 
def renwu(NO_,number,size,swipe_=0):
 if number == 0:
  print('pass 任务.{}'.format(NO_))
 else:
  if swipe_ ==1 :
   cleck_rw(NO_, number, size)
  elif swipe_ ==0:
   cleck_rw(NO_, number, size)
 
def begin (num1=25,num2=3,num3=25,num4=4,num6=4):
 #活动逛好店num=25 size=[813,741][1038,852]
 renwu(1,num1,800)
 print('活动逛好店')
 
 # 精彩会场num=25 size=[813,963][1038,1074]
 renwu(2,num2, 1000)
 print('精彩会场')
 
 # 精选好物num=25 size=[813,1185][1038,1296]
 renwu(3,num3, 1250)
 print('精选好物')
 
 # 更多互动num=25 size=[813,1407][1038,1518]
 renwu(4,num4, 1450)
 print('更多互动')
 
 #好友助力[813,1629][1038,1740]
 
 #推荐直播/视频 num=4 size=1593 1703
 renwu(6,num6, 1650,1)
 print('直播视频')
 
if __name__ == '__main__':
 begin()

总结

以上所述是小编给大家介绍的基于Python+Appium实现京东双十一自动领金币功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python thread 并发且顺序运行示例
Apr 09 Python
Python sys.path详细介绍
Oct 17 Python
python基础教程之python消息摘要算法使用示例
Feb 10 Python
python使用cookielib库示例分享
Mar 03 Python
浅谈Python中重载isinstance继承关系的问题
May 04 Python
python 实现一次性在文件中写入多行的方法
Jan 28 Python
Django分页功能的实现代码详解
Jul 29 Python
python多环境切换及pyenv使用过程详解
Sep 27 Python
pygame实现五子棋游戏
Oct 29 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
Jan 16 Python
Python requests设置代理的方法步骤
Feb 23 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
Mar 11 Python
如何关掉pycharm中的python console(图解)
Oct 31 #Python
使用python实现男神女神颜值打分系统(推荐)
Oct 31 #Python
python实现根据文件格式分类
Oct 31 #Python
Python简易计算器制作方法代码详解
Oct 31 #Python
python3 pillow模块实现简单验证码
Oct 31 #Python
利用Python校准本地时间的方法教程
Oct 31 #Python
python实现计算器功能
Oct 31 #Python
You might like
PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
2011/09/19 PHP
php中的一些数组排序方法分享
2012/07/20 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
2019/06/14 PHP
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
2012/04/14 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
jQuery随机密码生成的方法
2015/03/09 Javascript
简单的JS时钟实例讲解
2016/01/13 Javascript
详解AngularJS中的http拦截
2016/02/09 Javascript
JavaScript制作简单的日历效果
2016/03/10 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
2017/12/22 Javascript
记录一篇关于redux-saga的基本使用过程
2018/08/18 Javascript
JavaScript寄生组合式继承原理与用法分析
2019/01/11 Javascript
详细分析React 表单与事件
2020/07/08 Javascript
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
JS PHP字符串截取函数实现原理解析
2020/08/29 Javascript
[01:10:03]OG vs EG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python数据类型详解(二)列表
2016/05/08 Python
python使用Plotly绘图工具绘制柱状图
2019/04/01 Python
python实现大文件分割与合并
2019/07/22 Python
基于django ManyToMany 使用的注意事项详解
2019/08/09 Python
解决Jupyter NoteBook输出的图表太小看不清问题
2020/04/16 Python
python使用建议与技巧分享(一)
2020/08/17 Python
供货协议书范本
2014/04/22 职场文书
民事诉讼授权委托书范文
2014/08/02 职场文书
张家口市高新区党工委群众路线教育实践活动整改方案
2014/10/25 职场文书
工作态度恶劣检讨书
2015/05/06 职场文书
食堂管理制度范本
2015/08/04 职场文书
大学文艺委员竞选稿
2015/11/19 职场文书
世界十大评分最高的动漫,CLANNAD上榜,第八赚足人们眼泪
2022/03/18 日漫
OpenCV项目实践之停车场车位实时检测
2022/04/11 Python
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers