├── README.md └── adb_auto.py /README.md: -------------------------------------------------------------------------------- 1 | # adb_auto 2 | 3 | ## 运行环境 4 | 项目使用了adb对安卓手机进行模拟点击,所以在使用前安装好adb,打开手机的usb调试模式 5 | 6 | ## 如何使用 7 | 将手机ip设为静态ip然后更改代码中的ip 8 | 9 | 屏幕点击由于是根据自己的手机进行的适配可能有不准确的情况,需要自行调试 10 | -------------------------------------------------------------------------------- /adb_auto.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding:utf-8 -*- 3 | # =============================================================================== 4 | # Author: WangFan 5 | # Version: 0.1 6 | # Description: 使用adb自动操作安卓应用 7 | # Change Log: 8 | # 2018-12-30 9 | # 0.1 完成 10 | # =============================================================================== 11 | 12 | import os 13 | import time 14 | import re 15 | import sys 16 | import datetime 17 | import logging 18 | 19 | logging.basicConfig(level=logging.INFO,filename='./log', 20 | format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') 21 | logger = logging.getLogger(__name__) 22 | x = 0 23 | y = 0 24 | 25 | def connect(): 26 | global x 27 | global y 28 | ip = '10.10.9.189' 29 | password = '0805' 30 | res = os.system('adb connect {}'.format(ip)) # 连接手机 31 | if res == 0: 32 | size = os.popen('adb shell wm size') # 获取手机屏幕分辨率 33 | x, y = re.findall(r"(\d+)x(\d+)", size.read())[0] 34 | x = int(x) 35 | y = int(y) 36 | else: 37 | print('adb error') 38 | sys.exit() 39 | 40 | def unlock(password): 41 | """ 42 | 手机解锁 43 | :param password: 44 | :return: 45 | """ 46 | os.system('adb shell input keyevent 224') # 亮屏 47 | os.system('adb shell input swipe 300 1000 300 500') # 滑动屏幕到输入密码页 48 | os.system('adb shell input text {}'.format(password)) # 输入密码,华为手机不需要点击确定 49 | 50 | 51 | def run_qywx(x, y): 52 | """ 53 | 企业微信下班自动打卡 54 | :param x: 屏幕分辨率 55 | :param y: 56 | :return: 57 | """ 58 | # 运行企业微信 59 | os.system('adb shell monkey -p com.tencent.wework -c android.intent.category.LAUNCHER 1') 60 | time.sleep(5) # 等待页面加载 61 | os.system('adb shell input tap 700 2060'.format(x-380, y-100)) # 屏幕坐标x,y值 62 | os.system('adb shell input tap 200 600'.format(x-880, y-1560)) 63 | time.sleep(5) 64 | os.system('adb shell input tap 600 1600'.format(x-480, y-560)) 65 | os.system('adb shell input keyevent 223') 66 | 67 | 68 | if __name__ == '__main__': 69 | while 1: 70 | d=datetime.datetime.now() 71 | w = d.isoweekday() 72 | h = d.hour 73 | m = d.minute 74 | logger.info("当前时间{}".format(d)) 75 | if w not in (6,7) and h == 19 and m == 00: 76 | logger.info("开始自动打卡") 77 | connect() 78 | unlock(password) 79 | # run_wxxq()d 80 | run_qywx(x, y) 81 | logger.info("自动打卡完成") 82 | time.sleep(60) 83 | --------------------------------------------------------------------------------