基于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实现多线程的两种方式
May 22 Python
Python 实现简单的shell sed替换功能(实例讲解)
Sep 29 Python
python实战之实现excel读取、统计、写入的示例讲解
May 02 Python
Python实现的tcp端口检测操作示例
Jul 24 Python
Python判断以什么结尾以什么开头的实例
Oct 27 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
Dec 11 Python
关于tf.TFRecordReader()函数的用法解析
Feb 17 Python
python 安装impala包步骤
Mar 28 Python
基于Python共轭梯度法与最速下降法之间的对比
Apr 02 Python
python爬虫学习笔记之pyquery模块基本用法详解
Apr 09 Python
Python3爬虫里关于Splash负载均衡配置详解
Jul 10 Python
想学画画?python满足你!
Dec 24 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中的实现trim函数代码
2007/03/19 PHP
PHPMailer 中文使用说明小结
2010/01/22 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
php 把数字转换成汉字的代码
2015/07/21 PHP
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
总结JavaScript三种数据存储方式之间的区别
2016/05/03 Javascript
JavaScript使用readAsDataURL读取图像文件
2017/05/10 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
2017/07/20 Javascript
jQuery选择器特殊字符与属性空格问题
2017/08/14 jQuery
详解如何在vue项目中使用lodop打印插件
2018/09/27 Javascript
vue的for循环使用方法
2019/02/12 Javascript
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
详解Webpack抽离第三方类库以及common解决方案
2020/03/30 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
2020/03/31 Javascript
python logging 日志轮转文件不删除问题的解决方法
2016/08/02 Python
Python绑定方法与非绑定方法详解
2017/08/18 Python
python交互式图形编程实例(二)
2017/11/17 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
python操作kafka实践的示例代码
2019/06/19 Python
pandas 时间格式转换的实现
2019/07/06 Python
Python Django 实现简单注册功能过程详解
2019/07/29 Python
Python实现微信机器人的方法
2019/09/06 Python
Python numpy数组转置与轴变换
2019/11/15 Python
opencv python如何实现图像二值化
2020/02/03 Python
Python+OpenCV实现图像的全景拼接
2020/03/05 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
2020/05/23 Python
希尔顿酒店官方网站:Hilton Hotels
2017/06/01 全球购物
医生自荐信
2013/10/11 职场文书
服装设计师职业生涯规划范文
2014/02/28 职场文书
2014年妇委会工作总结
2014/12/10 职场文书
服务明星事迹材料
2014/12/29 职场文书
如何书写读后感?(附范文)
2019/07/26 职场文书
linux下导入、导出mysql数据库命令的实现方法
2021/05/26 MySQL
vue3获取当前路由地址
2022/02/18 Vue.js
Nginx图片服务器配置之后图片访问404的问题解决
2022/03/21 Servers
Dubbo+zookeeper搭配分布式服务的过程详解
2022/04/03 Java/Android