本文共 7062 字,大约阅读时间需要 23 分钟。
import osimport sysfrom time import sleepfrom random import randintclass Event(object): """模拟常用按键和事件处理类""" def __init__(self): self.KEYCODE_HOME = 3 # home键 self.KEYCODE_MENU = 82 # 结束 self.KEYCODE_BACK = 4 # 返回键 self.KEYCODE_POWER = 26 # 电源键 self.KEYCODE_DPAD_UP = 19 # 向上 self.KEYCODE_DPAD_DOWN = 20 # 向下 self.KEYCODE_DPAD_LEFT = 21 # 向左 self.KEYCODE_DPAD_RIGHT = 22 # 向右 self.package = "com" # 项目包名 def show_menu(self): """显示功能菜单""" print municipium print print print print print print def run(self): self.show_menu() num = int(input("输入选择的数字:")) if num == 1: print print print n_click = int(input("输入选择的数字:")) if n_click ==1: self.back() elif n_click ==2: self.home() elif n_click ==3: self.menu() elif n_click ==4: self.down() elif n_click ==5: self.up() elif n_click ==6: self.left() elif n_click ==7: self.right() elif n_click ==8: self.power() elif n_click ==9: while True: try: exit_flag = input("确定要退出吗?请回答Yes或No") if exit_flag == "Yes": print break elif exit_flag=="No": print #继续运行 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: self.package_version() os.system("pause") self.run() elif num ==5: self.package_meminfo() os.system("pause") self.run() elif num ==6: 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") self.run() except: print("函数暂不支持,建议检查包名或Activity名称") self.run() def package_version(self): """查看包名版本号""" global name name = "com" ver_info = os.popen(f"adb shell dumpsys package {self.package_name()} | grep version").read() print(f"当前版本:{ver_info}") def package_meminfo(self): """查看包内内存使用情况""" global name name = "com" package_name = self.package_name() mem_info = os.popen(f"adb shell dumpsys meminfo {package_name}") with open('mem_info.txt', 'w') as f: f.write(mem_info.read()) def fill_rom(self): """模拟生成空闲内存文件""" try: file_name, size = input("输入文件名和大小(单位:G):用逗号隔开").split(',') size = int(size) * 1024 cmd = f"adb shell dd if=/dev/zero of=/sdcard/{file_name} bs=1024000 count={size}" print(f"正在为/{file_name}创建空闲文件...") os.system(cmd) print(f"文件创建完成,文件大小:{size}MB") except: print("文件创建失败,可能是权限问题或文件名冲突。") def start_speed(self): """测试热冷启动速度""" global total_time, total_times, app_name hot_cold_choice = int(input("热启动输入1,冷启动输入2:")) app_name = input("请输入包名:") run_count = int(input("输入执行次数:")) if hot_cold_choice ==1: for i in range(run_count): start_time = os.popen(f"adb shell am start -W -n {app_name}`).read() time tak total_times.append(start_time) sleep(3) home_key = Event().KEYCODE_HOME os.system(f"adb shell input keyevent {home_key}") sleep(5) else: for i in range(run_count): start_time = os.popen(f"adb shell am start -W -n {app_name}`).read() time tak total_times.append(start_time) sleep(2) os.system(f"adb shell am force-stop {app_name}") sleep(2) total_time = sum(total_times)/run_count print(f"平均启动时间:{total_time}秒") def package_activity_name(self): """获取当前活动 Surely name""" focus_component = os.popen("adb shell dumpsys window | findstr mCurrentFocus").read() package = "com" activity = None for line in focus_component.splitlines(): if "com" in line: activity = line.split('/')[-2] break return activity def package_name(self): """获取包名""" focus_component = os.popen("adb shell dumpsys window | findstr mCurrentFocus").read() package = None for line in focus_component.splitlines(): if "com" in line: package = line.split('/')[-2] break if package is not None: return package else: print("未能获取当前输入的活动) def start_app(self): """启动指定应用""" name = "com" package_name = None for line in self.package_name().splitlines(): if "com" in line: package_name = line.split('/')[-2] break if package_name: os.system(f"adb shell am start -n {package_name}") else: print("无法启动应用,请检查包名是否正确") def back(self): """模拟返回键按键""" key_event = f"adb shell input keyevent {self.KEYCODE_BACK}" os.system(key_event) def home(self): """模拟主键按键""" key_event = f"adb shell input keyevent {self.KEYCODE_HOME}" os.system(key_event) def menu(self): """模拟菜单键按键""" key_event = f"adb shell input keyevent {self.KEYCODE_MENU}" os.system(key_event) def power(self): """模拟电源键按键""" key_event = f"adb shell input keyevent {self.KEYCODE_POWER}" os.system(key_event) def up(self): """模拟向上滑动""" key_event = f"adb shell input keyevent {self.KEYCODE_DPAD_UP}" os.system(key_event) def down(self): """模拟向下滑动""" key_event = f"adb shell input keyevent {self.KEYCODE_DPAD_DOWN}" os.system(key_event) def left(self): """模拟向左滑动""" key_event = f"adb shell input keyevent {self.KEYCODE_DPAD_LEFT}" os.system(key_event) def right(self): """模拟向右滑动""" key_event = f"adb shell input keyevent {self.KEYCODE_DPAD_RIGHT}" os.system(key_event)if __name__ == "__main__": event = Event() event.run()
转载地址:http://aefmz.baihongyu.com/