基于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 相关文章推荐
机器学习经典算法-logistic回归代码详解
Dec 22 Python
python生成tensorflow输入输出的图像格式的方法
Feb 12 Python
Python根据欧拉角求旋转矩阵的实例
Jan 28 Python
numpy.random模块用法总结
May 27 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
Mar 16 Python
django实现HttpResponse返回json数据为中文
Mar 27 Python
python 等差数列末项计算方式
May 03 Python
详解Python的爬虫框架 Scrapy
Aug 03 Python
Python实现冒泡排序算法的完整实例
Nov 04 Python
PyQt5中QSpinBox计数器的实现
Jan 18 Python
Python中Qslider控件实操详解
Feb 20 Python
python 对图片进行简单的处理
Jun 23 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 计算两个时间戳相隔的时间的函数(小时)
2009/12/18 PHP
PHP函数常用用法小结
2010/02/08 PHP
php set_time_limit()函数的使用详解
2013/06/05 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
总结对比php中的多种序列化
2016/08/28 PHP
jQuery写的日历(包括日历的样式及功能)
2013/04/23 Javascript
使用js声明数组,对象在jsp页面中(获得ajax得到json数据)
2013/11/05 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
2014/05/09 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
2014/10/31 Javascript
jQuery添加和删除指定标签的方法
2015/12/16 Javascript
jQuery获取剪贴板内容的方法
2016/06/16 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
2016/06/24 Javascript
js前端面试题及答案整理(一)
2016/08/26 Javascript
HTML5 实现的一个俄罗斯方块实例代码
2016/09/19 Javascript
Flask中获取小程序Request数据的两种方法
2017/05/12 Javascript
vue 挂载路由到头部导航的方法
2017/11/13 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
2018/05/18 Javascript
vue-cli3单页构建大型项目方案
2020/04/07 Javascript
JavaScript DOM常用操作代码汇总
2020/07/03 Javascript
Python基本数据类型详细介绍
2014/03/11 Python
详解python单例模式与metaclass
2016/01/15 Python
Python 生成 -1~1 之间的随机数矩阵方法
2018/08/04 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
2018/12/02 Python
python3图片文件批量重命名处理
2019/10/31 Python
Python综合应用名片管理系统案例详解
2020/01/03 Python
windows10在visual studio2019下配置使用openCV4.3.0
2020/07/14 Python
用python批量移动文件
2021/01/14 Python
Juice Beauty官网:有机美容产品,护肤与化妆品
2020/06/13 全球购物
乌鸦喝水教学反思
2014/02/07 职场文书
羽毛球社团活动总结
2014/06/27 职场文书
2014年财务科工作总结
2014/11/11 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书
详解Python牛顿插值法
2021/05/11 Python
安装配置mysql及Navicat prenium的详细流程
2021/06/10 MySQL