基于Python+Appium实现京东双十一自动领金币功能
作者:一土小亘兄 发布时间:2022-10-15 19:21:04
背景:做任务领金币的过程很无聊,而且每天都是重复同样的工作,非常符合自动化的定义;
工具:python,appium,Android 手机(我使用的是安卓6.0的),数据线一根;
开搞前先让手机和电脑连上同一个无线网;
1.抓取京东APP的包名和Activity
先连接手机 windows+r输入cmd进入命令行页面
输入:adb devices查看设备是否链接;
输入:adb shell pm list package -3查看手机里面的第三方安装包;
很明显可以看出来京东的package是:com.jingdong.app.mall
输入:adb shell monkey -v -v -v -p com.jingdong.app.mall 10 ,使用monkey命令运行京东APP在运行日志中找到Activity,(这是我至今为止找Activity最好用的方法,有更好可以留言。)在日志最后面找到包名,包名的“/” 后面就是Activity;
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;
点击右上角三角开启;
4.使用uiautomatorviewer.bat 工具获取APP内按钮定位;
uiautomatorviewer.bat 工具比较辣鸡,也可能因为我比较辣鸡,就是很多页面获取不到,获取到了也找不到按钮的class,id等等,说以我这里使用的是坐标点击。uiautomatorviewer.bat工具在android-sdk\tools目录下;
例如点击全民养红包: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实现京东双十一自动领金币功能,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:https://blog.csdn.net/just__like/article/details/102797008


猜你喜欢
- 一、query传参编程式导航 使用router.push 或者 router.replace 的时候,改为对象形式新增query 必须传入一
- 欢迎来到 vue-form 表单提交演示间, 你有更好的建议,请告知楼主额!1. 客户端 html<!DOCTYPE html>
- 下载mysql for mac: https://downloads.mysql.com/archives/community/
- 扩展Code:var blogModule = (function (my) { my.AddPhoto = function (
- 先附上官方文档说明:https://pytorch.org/docs/stable/nn.functional.htmltorch.nn.f
- 今天看到了这个文章感觉内容挺多的,就是比较乱,实在不好整理,脚本之家小编就简单整理了一下,希望大家能凑合看吧分组后分组合计以及总计SQL语句
- 开发背景:每次项目都要写数据库、烦死了。。然后就每次数据库都要花很多时间。烦死了!不如写个通用的增删查改,以不变应万变!特性:搭建通用增删查
- PyQt5 QtChart-散点图QScatterSeries类将数据以散点图显示import sysimport randomfrom P
- 1.文件的读取和显示方法1: f=open(r'G:\2.txt') print f.read()&nb
- 阅读上一篇:W3C优质网页小贴士(三)明智地选择 URI没有什么比走到你最喜欢的商店门口,却发现店门紧闭,而且没有看见店面搬迁告示这种事情还
- 这里是说watch调用methods里方法的时候,页面经常会报找不到方法这个时候一定要在watch里去输出一下this,看看this包裹的壳
- 1、前言在我们日常的开发工作中,为了代码的健壮性,我们通常会对方法中的业务代码进行try-except的包装,以防止在发生异常的时候进程被中
- 本文的JS效果是在鼠标点击ITEM标签的时候,实现下方的内容跟随滚动切换的效果,我们先来看下运行后的效果图。以下是脚本之家原创的运行代码:&
- 如何实现让每句话的头一个字母都大写? <%dim txtFnametxtFName = &qu
- 1、os.path 方法# -*- coding: utf-8 -*-# !/usr/bin/pythonimport osimport s
- jQuery获取Select选择的Text和Value: $("#select_id").change(function
- 有这样一个经历,服务器挂掉了,请工程师维护,为了安全,工程师进行核心操作时,直接关掉显示器进行操作,完成后,再打开显示器,进行收尾工作...
- Python脚本有一个毛病,当使用相对路径时,被另一个不同目录下的py文件中导入时,会报找不到对应文件的问题。感觉是当前工作目录变成了导入p
- 本文实例讲述了python引用DLL文件的方法。分享给大家供大家参考。具体分析如下:在python中调用dll文件中的接口比较简单,如我们有
- // 涉及命名空间 using System; using System.Collections; using System.Compone