#coding=utf8

importos,re,time,loggingimportpyautoguifrom apscheduler.schedulers.background import BackgroundScheduler #后台运行任务计划

sc=BackgroundScheduler()

UIFILE= "ui.xml"

#如何找APP的值,请看runapp()函数注释

APP = r"com.XXX/XXXActivity"logging.basicConfig(filename="adbwork.log",filemode="w",format="%(asctime)s-%(name)s-%(levelname)s-%(message)s",level=logging.INFO)#执行cmd命令

defa(c):

r=os.popen(c).read()returnr#判断设备是否连接

defcaniuse():

s= a("adb devices").split("\n")if s[1]==‘‘:returnFalseelse:returnTrue#判断wifi是否连接#adb shell getprop wifi.interface 得到返回wlan0

defcanwifi():

s= a("adb shell getprop dhcp.wlan0.result").split("\n")if s[0]==‘ok‘:returnTrueelse:returnFalse#清理关闭所有程序==可能不适用您的手机

defclean():

a("adb shell input keyevent 187") #切换应用

time.sleep(1)

a("adb shell input tap 540 1740") #点击清扫按钮

time.sleep(1)#判断手机电源是否打开

defpoweron():

s= a("adb shell dumpsys power")

s= re.search(r"Display Power: state=ON",s,re.I |re.M)if s ==None:returnFalseelse:returnTrue#启动APP

defrunapp(app):#获取所有package:adb shell pm list packages 查看所有包名

#获取当前package和activity:首先打开APP,然后运行:adb shell dumpsys window | findstr mCurrentFocus

#获取package和activity:1、首先运行:adb shell dumpsys package 用上一行命令获取的package名

#2、然后在输入结果中找 Activity Resolver Table: ... Non-Data Actions:下面第2行,

#类似1960b60b com.baidu.searchbox/com.baidu.android.pushservice.PushPatchMessageReceiver的

#用作本函数的参数,以启动APP

a("adb shell am start"+app)def Tap(kw,ordinal=0):

ui()#刷新

while notos.path.isfile(UIFILE):

time.sleep(0.5)

with open(UIFILE, mode=‘r‘, encoding=‘UTF-8‘) as f: #打开文件

data = f.read() #读取文件

regkw = "]+?" + kw + ".[^>]+?\[(\d+),(\d+)\]\[(\d+),(\d+)\].+?>"a=re.findall(regkw, data)

x1=int(a[ordinal][0])

y1= int(a[ordinal][1])

x2= int(a[ordinal][2])

y2= int(a[ordinal][3])

xx= int((x2-x1)/2 +x1)

yy= int((y2-y1)/2 +y1)

cmd= "adb shell input tap" + str(xx) +" " +str(yy)

r=os.popen(cmd).read()return ‘‘

#获取手机当前页面的源代码,并复制到当前脚本所在目录

defui():

a(r"cmd /c del ui.xml -y")#删除当前目录下旧的ui.xml(如果有的话)

a("adb shell rm /sdcard/ui.xml")#删除手机中旧的的ui.xml(如果有的话)

a("adb shell uiautomator dump /sdcard/ui.xml") #重新dump

time.sleep(0)#等待保存到手机卡

a("adb pull /sdcard/ui.xml .")

time.sleep(0)#等待下载到电脑

#判断用ui()函数获取的ui.xml的源码中是否包括1个或多个关键字(不能用正则表达式)#用法:uiContains("关键字1","关键字n")

def uiContains(*kw):

numkw=len(kw)

kws=‘‘

if numkw<1:returnFalsefor i inrange(len(kw)):

kws= kws + kw[i]+‘|‘kws= kws.strip(‘|‘)

ui()#刷新

while notos.path.isfile(UIFILE):

time.sleep(0.5)

with open(UIFILE, mode=‘r‘, encoding=‘UTF-8‘) as f: #打开文件

data = f.read() #读取文件

a =re.findall(kws, data)

numkwfind=len(set(a))if numkw ==numkwfind:returnTrueelse:returnFalse#判断用ui()函数获取的ui.xml的源码中是否匹配1个“正则表达式”#用法:uiRegEx("正则表达式")

defuiRegEx(regkw):

ui()#刷新

while notos.path.isfile(UIFILE):

time.sleep(0.5)

with open(UIFILE, mode=‘r‘, encoding=‘UTF-8‘) as f: #打开文件

data = f.read() #读取文件

a =re.findall(regkw, data)print(a)

num=len(a)print(num)if num >0 :returnTrueelse:returnFalse#强制退出应用adb shell am force-stop #a("adb shell am force-stop XXXX")#点击:adb shell input tap 939 1820#滑动:adb shell input swipe 451 1183 490 321#长按:将滑动距离缩小并加延时1秒 adb shell input swipe 500 1500 500 1500 1000#模拟按键:adb shell input keyevent 26#常用keycode#HOME键3 返回键4 电源键26#切换应用187 点亮屏幕224 系统休眠223#KEYCODE_0表示数字0 KEYCODE_ENTER KEYCODE_TAB

#签到,要根据个人手机情况微调

defqd():

a("adb shell input tap 939 1820") #点积分

time.sleep(1)#签到积分

@sc.scheduled_job(‘interval‘, seconds=3600*8 ,id=‘dowork‘) #每隔X秒执行一次

defdowork():#开始操作

logging.info("开始签到")

a("adb shell input keyevent 224") #点亮手机屏幕

time.sleep(1)

a("adb shell input swipe 500 1500 500 400")#向上滑动

time.sleep(1)

a("adb shell input keyevent 3") #HOME

if caniuse() == False:#如果在手机点亮前检查,经常是连接不上

pyautogui.alert("请检查手机连接状态")return

if canwifi() == False:#如果在手机点亮前检查,经常是连接不上

pyautogui.alert("请检查wifi状态")returnrunapp(APP)#启动应用

time.sleep(30)#手机休眠前清理应用==================================

clean()

a("adb shell input keyevent 223") #系统休眠

logging.info("完成签到")if __name__ == ‘__main__‘:

dowork()

sc.start()while(1):#保持程序不退出

pass

python控制手机自动刷新闻_python +adb控制手机自动化签到相关推荐

  1. python控制手机自动刷新闻_Python脚本利用adb进行手机控制的方法

    一. adb 相关命令: 1. 关闭adb服务:adb kill-server 2. 启动adb服务 adb start-server 3. 查询当前运行的所有设备 adb devices 4. 可能 ...

  2. python控制手机自动刷新闻_Python控制android手机实现微信自动跳一跳

    学习一个新东西一定要有趣,如果只是简单学习语法太枯燥了.弄了个跳一跳的程序,注释写的很清楚#!/usr/bin/env python # encoding: utf-8 # @software: Py ...

  3. python自动刷视频_python+adb命令实现自动刷视频脚本案例

    python小白第一次发博客,自己自学了一下写了一个demo,可能语法啥的不够标准,毕竟没有真正学过python 主要用到的是 import os #os包用于运行cmd命令 adb shell #这 ...

  4. ADB 控制Android自动刷抖音

    ADB 控制Android自动刷抖音 前言 思路 具体实现 手机打开开发者模式 使用ADB连接手机 使用ADB控制手机滑动 使用bat读取设备列表 使用bat判断设备列表中是否有设备 当有设备时开始滑 ...

  5. 安卓自动滑屏脚本_手机自动滑屏软件下载-安卓手机自动滑屏(Auto.js)下载v4.1.1 安卓免root版-西西软件下载...

    安卓手机自动滑屏软件一款全新功能强大的手机应用脚本,可以更好的实现上下滑屏幕助手,免root屏幕自动滑动,编写软件.游戏脚本等一站式服务功能,需要的朋友快来下载体验吧! 安卓手机自动滑屏是什么软件 手 ...

  6. Python骚操作—自动刷抖音

    python骚操作之电脑自动刷抖音 上篇文章发完之后,有朋友在后台留言给我,说手机自动化控制很炫酷,但是appium的安装和使用很复杂,想让我写一篇详细文章介绍一下,下面我就以自动刷抖音为例简单介绍一 ...

  7. python脚本实现自动刷王者荣耀金币

    疫情期间,一些朋友可能会选择游戏打发时间,我也是其中之一.为了快速获得金币,购买英雄,我百度了一些参考文章,结合编程实现实际,作此篇,帮助即使小白,只要会用python IDE,也能实现自动刷金币. ...

  8. python实现阴阳师自动刷御魂脚本_用Python实现FGO自动战斗脚本

    我家黑贞! 1. 背景 Fate/Grand Order(非的肝不过欧的)作为索尼为了拯救自己不倒闭而开发的面向月厨的骗氪养成抽卡爆肝游戏,居然没有像隔壁<阴阳师>的自动战斗系统(看看别人 ...

  9. 电脑控制android 源代码,[源代码]电脑通过adb控制安卓手机

    [实例简介] vs2008编译通过,电脑通过adb控制安卓手机拨打电话,发短信,控制微信自动加好友,安卓版本4.3以上,主要是通过读取手机当前界面的元素布局,保存到xml,然后通过xml解析出各个控件 ...

最新文章

  1. 嵌入式Linux设备驱动程序:编写内核设备驱动程序
  2. CBM--组件化业务模型简介
  3. 幸运的背后,总是靠自身的努力在支撑
  4. Ajax框架,DWR介绍,应用,样例
  5. java掉单_【Java】抄答案就是了,两套详细的设计方案,解决头疼的支付掉单问题...
  6. NS2相关学习——完成一个新的协议(1)
  7. Docker 6岁啦!多场线下 Party 即将来袭!
  8. 解决子级用css float浮动 而父级div没高度不能自适应高度
  9. 20162309《程序设计与数据结构》第二学期课程总结
  10. 统计学习基础:数据挖掘、推理和预测_百度零基础深度学习笔记(三) 波士顿房价预测...
  11. Ubuntu 16.04下Linux驱动编写第一步
  12. 苹果电脑更改sd卡只读_SD内存卡禁止写入只读怎么办?另类SPI模式修复坏卡
  13. 大学生爱情兵法-洪亚非-听课笔记
  14. [渝粤教育] 西南科技大学 翻译 在线考试复习资料
  15. linux 切换gnome kde桌面,科学网—openSUSE15.1切换桌面环境(从Gnome至KDE Plasma) - 潘林的博文...
  16. 一个amp;quot;现象级amp;quot;大数据公司的蜕变
  17. Android 恢复出厂设置(recovery)
  18. 了解一下什么是领导力,以及如何培养领导力
  19. 这么糟糕的代码,真的是我以前写的吗?
  20. 面向对象的正式与非正式解释!

热门文章

  1. java+调用jacoco_java操作jacoco
  2. 运维人员打字耍不要快_法考经验与教训 —— 打字
  3. 机器人统治人类?别逗!现实中的机器人是这样的
  4. FIR仿真module_04
  5. SQL优化常用方法31
  6. 中国电信与华为签物联网合作协议
  7. 我的Android进阶之旅------gt;解决Jackson等第三方转换Json的开发包在开启混淆后转换的实体类数据都是null的bug...
  8. 关于字符集--总结,补遗以及问题
  9. 苹果公司的新的编程语言 Swift 高级语言()两--基本数据类型
  10. java远程调用linux的命令或者脚本