ADB

import os
import sys
from time import sleep
from random import randint


class Event(object):
    def __init__(self):
        '''常用keyevent事件'''
        self.KEYCODE_HOME = 3  # home键
        self.KEYCODE_MENU = 82  # 解锁
        self.KEYCODE_BACK = 4  # back键
        self.KEYCODE_POWER = 26  # power键
        self.KEYCODE_DPAD_UP = 19  # 向上
        self.KEYCODE_DPAD_DOWN = 20  # 向下
        self.KEYCODE_DPAD_LEFT = 21  # 向左
        self.KEYCODE_DPAD_RIGHT = 22  # 向右
        self.package = "com"
        #os.system("adb devices")

    def show_menu(self):

        print("========================================================== ")
        print("||      <1>按键事件          <2>填充内存         <3>启动包    ||\n")
        print("||      <4>查看版本          <5>查看包内存      <6>查看包名   ||\n")
        print("||      <7>打开的包activity  <8>冷热启动速度    <9>         ||\n")
        print(" ======================================================== \n")


    def run(self):
        self.show_menu()
        num = int(input("输入选择的数字:"))


        if num == 1:
            print("========================================================== ")
            print("||      <1>back按键       <2>home按键       <3>menu按键   ||\n")
            print("||      <4>向下滑动       <5>向上滑动         <6>向左滑动   ||")
            print("||      <7>向右滑动       <8>power按键       <9>退出程序    || ")
            print(" ========================================================= \n")
            num_click = int(input("输入选择的数字:"))
            if num_click==1:
                self.back()
            elif num_click==2:
                self.home()
            elif num_click==3:
                self.menu()
            elif num_click==4:
                self.down()
            elif num_click==5:
                self.up()
            elif num_click==6:
                self.left()
            elif num_click==7:
                self.right()
            elif num_click==8:
                self.power()
            elif num_click==9:
                while True:
                    try:
                        exit_flag = input("确定要退出吗 Yes or No")
                        if exit_flag == "Yes":
                            print("程序已经退出▁▁▁▂▂▂▃▃▅")
                            break
                        elif exit_flag=="No":
                            print("程序不会退出")
                            #continue
                        else:
                            return_home=int(input("您输入的功能有误,返回到主菜单输入 1"))
                            if return_home==1:
                                self.run()
                            else:
                                break
                    except:
                        pass

        elif num == 2:
            self.fill_rom()
            os.system("pause")
            self.run()
        elif num == 3:
            self.start_app()
            os.system("pause")
            self.run()
        elif num == 4:
            Event.package_version(self)
            os.system("pause")
            self.run()
        elif num == 5:
            self.package_meminfo()
            os.system("pause")
            self.run()
        elif num==6:
            print(self.package_name())
            os.system("pause")
            self.run()
        elif num==7:
            self.package_activity_name()
            os.system("pause")
            self.run()
        elif num==8:
            try:
                self.start_speed()
                os.system("pause")
            except:
                print("不支持该应用,或请输入正确包Activity,选项7可获取")
                self.run()

    def package_version(self):  # 查看当前系统版本号
        global name
        name = "com"
        i=self.package_name()
        # a = os.popen("adb shell dumpsys window | findstr mCurrentFocus").readlines()
        # for i in a:
        #     if "com" in i:
        #         # a=i.split('/')[-2]
        #         i = i.split('/')[-2][34:]
        os.system('adb shell "dumpsys package %s | grep version"' % i)

            # return i

            #     print(list(i).enumerate(name))
            # print(type(i))
            # break

    def package_meminfo(self):
        global name
        name = "com"
        i=self.package_name()
        self.a = os.popen("adb shell dumpsys window | findstr mCurrentFocus")
        # for i in a:
        #     if "com" in i:
        #         # a=i.split('/')[-2]
        #         i = i.split('/')[-2][34:]
        #         print("当前应用包名是\t:", i)
        os.system('adb shell "dumpsys meminfo %s\n\n"' % i)

        # a = os.popen("adb shell dumpsys window | findstr mCurrentFocus")
        # for i in a:
        #     if "com" in i:
        #         # a=i.split('/')[-2]
        #         i = i.split('/')[-1][34:]
        #         a = os.popen("adb shell am start -n %s" % i)
        #         print(a)

    def fill_rom(self):
        try:
            a, i = input("输入填充的文件和内存的G数,用逗号隔开:").split(',')
            count = int(i) * 1024
            os.system("adb shell dd if=/dev/zero of=sdcard/{} bs=1024000 count={}".format(a, count))
            print("填充中......")
        except:
            pass

    def start_speed(self):
        total = 0
        TotalTime_sum = []
        self.TotalTime = ""
        self.WaitTime = ""
        #activity=self.package_activity_name()

        Hotcold_start = int(input('热启动输入1,冷启动输入2:  '))
        i = input("输入包名:")
        number_sum = int(input("输入启动次数:"))
        if Hotcold_start == 1:
            # s=self.package_name()
            for number in range(number_sum):
                start = os.popen("adb shell am start -W  {}".format(i)).read()

                TotalTime = start.split('\n')[-4]
                print("第{}启动耗时为".format(number + 1), TotalTime)
                TotalTime_int = TotalTime.split(':')[-1]
                TotalTime_int = int(TotalTime_int.strip())
                TotalTime_sum.append(TotalTime_int)
                sleep(2)
                os.system("adb shell input keyevent KEYCODE_HOME")
                sleep(3)

            for ele in range(0, len(TotalTime_sum)):
                total = total + TotalTime_sum[ele]
            totaltime = total / number_sum
            print("共执行的启动时间:%s\n平均时间:%s" % (TotalTime_sum, totaltime))
        elif Hotcold_start == 2:
            for number in range(number_sum):
                start = os.popen("adb shell am start -W  {}".format(i)).read()
                app = self.package_name()
                #print('app是:',app)
                TotalTime = start.split('\n')[-4]
                print("第{}启动耗时为".format(number + 1), TotalTime)
                TotalTime_int = TotalTime.split(':')[-1]
                TotalTime_int = int(TotalTime_int.strip())
                TotalTime_sum.append(TotalTime_int)
                sleep(2)
                os.system("adb shell am force-stop {}".format(app))
                sleep(2)

            for ele in range(0, len(TotalTime_sum)):
                total = total + TotalTime_sum[ele]
            totaltime = total / number_sum
            print("共执行的启动时间:%s\n平均时间:%s" % (TotalTime_sum, totaltime))

    # class App():
    """"启动速度"""
    #     def __init__(self, pagename, firstActivity):
    #         """构造方法"""
    #         self.pagename = pagename
    #         self.firstActivty = firstActivity
    #         self.content = ""  # 执行命令的文本
    #         self.startTime = ""  # 启动的时间   #
    #
    #     def startApp(self):
    #         """开启app"""
    #         cmd = "adb shell am start -W -n com.android.camera/com.android.camera.Camera"
    #         self.content = os.popen(cmd)
    #
    #     def stopApp(self):
    #         """停止app"""
    #         cmd = "adb shell am force-stop com.android.camera/com.android.camera.Camera"
    #         os.popen(cmd)
    #
    #     def getStartTime(self):
    #         """获取启动时间"""
    #         for line in self.content.readlines():
    #             if "ThisTime" in line:
    #                 self.startTime = line.split(":")[1]
    #                 break
    #         return self.startTime

    def package_activity_name(self):
        a = os.popen("adb shell dumpsys window | findstr mCurrentFocus").read()
        aa=a.index('com')
        package_name = ''.join(a)[aa:-2:]
        print(package_name)
        return package_name
    def package_name(self):
        a = os.popen("adb shell dumpsys window | findstr mCurrentFocus").read()
        #print(a)
        aa=a.index('com')
        i = a.split('/')[-2][aa:]  # 这样作为
        return i
        # for i in a:
        #     if "com" in i:
        #         # a=i.split('/')[-2]
        #         i = i.split('/')[-2][aa:]  #这样作为
        #         print(i)
        #     return i




#
    def start_app(self):
        """"以下已经完成"""
        name = "com"
        a = os.popen("adb shell dumpsys window | findstr mCurrentFocus").readlines()
        print('a的actity为',a)
        global package_name
        package_name = ''.join(a)[34:-2:] #字符串切片
        print('包名是',package_name)
        return package_name

        # b = ''.join(a)
        # print('b通过.join合并成字符串',b)
        # str1=b[34:-2:]
        # print('str1新的Activity',str1)
        #os.system("adb shell am start -n%s" % str1)

        #print(str1)
        # for i in a:
        #     if "com" in i:
        #         # a=i.split('/')[-2]
        #         i = i.split('/')[34:]
        #         print(i)

                # print(b,type(b))
                # c=b.split()
                # print(c,type(c))
                # test = [i for i in a if i != '']
                # print(test)
        #os.system("adb shell am start -n%s" % a)
        #print(a)

    #
    #
    def back(self):
        keyname = self.KEYCODE_BACK
        ' 执行adb keyevent事件 参数从Event类里面关联'
        adb = 'adb shell input keyevent %s' % keyname
        os.system(adb)

    # 点击home键
    def home(self):
        keyname = self.KEYCODE_HOME
        adb = 'adb shell input keyevent %s' % keyname
        os.system(adb)

    # 点击菜单键
    def menu(self):
        keyname = self.KEYCODE_MENU
        adb = 'adb shell input keyevent %s' % keyname
        os.system(adb)

        # 按一下电源键

    def power(self):
        keyname = self.KEYCODE_POWER
        adb = 'adb shell input keyevent %s' % keyname
        os.system(adb)

        # 向上滑动

    def up(self):
        keyname = self.KEYCODE_DPAD_UP
        adb = 'adb shell input keyevent %s' % keyname
        os.system(adb)

        # 向下滑动

    def down(self):
        keyname = self.KEYCODE_DPAD_DOWN
        adb = 'adb shell input keyevent %s' % keyname
        os.system(adb)

        # 向左滑动

    def left(self):
        keyname = self.KEYCODE_DPAD_LEFT
        adb = 'adb shell input keyevent %s' % keyname
        os.system(adb)

    # 向右滑动
    def right(self):
        keyname = self.KEYCODE_DPAD_RIGHT
        adb = 'adb shell input keyevent %s' % keyname
        os.system(adb)


# 模拟点击屏幕指定位置
# adb shell input tap 500 500
# 3. 模拟滑动
# 从(500,800)滑动到(500,300)
# adb shell input swipe 500 800 500 300
if __name__ == '__main__':
    #aa = Event().run()
    aa=Event().run()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值