基于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 相关文章推荐
tornado框架blog模块分析与使用
Nov 21 Python
使用Python标准库中的wave模块绘制乐谱的简单教程
Mar 30 Python
详解Python的collections模块中的deque双端队列结构
Jul 07 Python
python3学习笔记之多进程分布式小例子
Feb 13 Python
根据DataFrame某一列的值来选择具体的某一行方法
Jul 03 Python
Flask框架各种常见装饰器示例
Jul 17 Python
python生成1行四列全2矩阵的方法
Aug 04 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
Sep 27 Python
python中@property和property函数常见使用方法示例
Oct 21 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
May 26 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
Nov 24 Python
Python requests用法和django后台处理详解
Mar 19 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.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
php实现字符串首字母转换成大写的方法
2015/03/17 PHP
PHP实现的简单网络硬盘
2015/07/29 PHP
jQuery实现 注册时选择阅读条款 左右移动
2013/04/11 Javascript
JS(JQuery)操作Array的相关方法介绍
2014/02/11 Javascript
jQuery中判断对象是否存在的方法汇总
2016/02/24 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
基于 Vue 的树形选择组件的示例代码
2017/08/18 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
vue.js移动数组位置,同时更新视图的方法
2018/03/08 Javascript
JavaScript模拟实现自由落体效果
2018/08/28 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
javascript面向对象三大特征之多态实例详解
2019/07/24 Javascript
Vue 简单实现前端权限控制的示例
2020/12/25 Vue.js
python函数缺省值与引用学习笔记分享
2013/02/10 Python
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
Python 内置函数memoryview(obj)的具体用法
2017/11/23 Python
解决Mac下首次安装pycharm无project interpreter的问题
2018/10/29 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
django-filter和普通查询的例子
2019/08/12 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
python字典的值可以修改吗
2020/06/29 Python
法国最大电子商务平台:Cdiscount
2018/03/13 全球购物
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
中学教师岗位职责
2013/11/26 职场文书
幼儿教师培训感言
2014/03/08 职场文书
经典广告词大全
2014/03/14 职场文书
房屋转让协议书范本
2014/04/11 职场文书
国庆节演讲稿
2014/05/27 职场文书
运动会广播稿100字
2014/09/14 职场文书
群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
小学体育跳绳课教学反思
2016/02/16 职场文书
python Polars库的使用简介
2021/04/21 Python
Jupyter Notebook内使用argparse报错的解决方案
2021/06/03 Python