背景介绍
这是一个从今年双十一时候产生的一个想法,好多平台上都有很多羊毛可以薅,每天签到啊什么的,然后每天去点就很烦,希望做一个自动化的小工具去让程序去自动完成各种签到,浏览什么的。
正好赶上崴脚下不了地,只能宅在宿舍,而且最难的最优化也考完了,就利用这段时间把这个想法实现了一下。
程序应包含如下几个功能
- 有一个窗口专门用来显示手机的屏幕,在这个窗口上的点击和滑动应该能映射到手机的点击和滑动。并且由于手机屏幕的分辨率太高了,这里还有一个缩放映射的问题。
- 各种手机的操作可以录成一个动作组,基本的动作包含:点击,滑动,延时,返回键,home键。录制的动作组应以一定格式存储在文件中,并方便编辑
- 针对不同的任务,记录不同的动作文件,动作文件导入后应可以批量执行
程序上传到了:https://github.com/buaalzm/auto_mobile
博客连接:https://blog.csdn.net/qq_33833073/article/details/103553273
项目概述
主要功能应有如下几个
- 屏幕显示
- 动作录制与存储
- 动作加载与执行
其中,用电脑操作手机使用adb工具,GUI设计使用PyQt5,动作文件的存储使用json格式
使用说明
界面是长这个样子的~
- 点击测试连接,在命令行中会输出devices信息,有设备号则表示连上了
- 点击获取屏幕,获得一张手机的截图并显示在窗口中
- 返回桌面和返回上一级按钮映射到手机对应的操作
- 在显示手机屏幕的地方上面点击或滑动,会映射到手机对应的操作,并获取一张新的截图
- 点击开始录制按钮之后,弹出对话框输入要保存的文件名(不需要加扩展名),在电脑端对手机的操作会被记录下来,点击停止录制,记录的动作保存到…/mobile_action目录中,以json文件存储
- 添加和删除按钮是对动作文件进行操作,编辑要执行的动作组,待执行的动作会显示到下方的TreeWidget中
- 点击开始执行,即执行TreeWidget中显示的动作组
详细设计
提升一个类用于图像显示
设计一个ImageLabel类专门用于图像显示,以及鼠标事件的拦截
提升类的操作
新建一个ImageLabel.py文件,在里面编写ImageLabel类,继承QLabel
初始化时传递一个图片的路径,通过showImage函数显示图片
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QLabel
class ImageLabel(QLabel):
showImageSignal = pyqtSignal()
def __init__(self, parent=None):
super(ImageLabel, self