当前位置:网站首页>2021-11-26 pyautogui 配合雷电模拟器实现手机APP签到答题自动化
2021-11-26 pyautogui 配合雷电模拟器实现手机APP签到答题自动化
2022-07-17 05:11:00 【海的思想】
有了基础命令就可以进行很多找图点击选点的操作了,那么这篇博客记录什么呢?
首先,Python和PC端契合是很好的,全能语言不是吹的。我使用PYAUTOGUI主要目的是配合手机模拟器实现APP签到和答题。模拟器本次选择的是雷电模拟器,这里大量使用了找图和点击命令,毕竟人手签到也是找图和点击,其实逻辑是一样。
- 首先 ,注意模拟的分辨率设置,一旦确定就不要改了,要在这个分辨率下截图,那么一改图片就很容易找不到。

- 准备几个库 pyautogui,还有剪切板读取和写入模块 pyperclip, 以及opencv进行一定的找图相似度控制
pip install opencv-python
import pyperclip
pyperclip.copy('123') # 写入剪切板
dd=pyperclip.paste() #获取
3.包装一个函数用来找图,大量的全屏找图必须复用
import pyautogui,time
def find_bmp_all(path): #传入图片位置和名字
a=list(pyautogui.locateAllOnScreen(path,confidence=0.9))#找到所有图并返回一个列表
print(a)
if len(a)==1:#找到一个的情况
b=pyautogui.center(a[0]) #确定中心点
print(b)
pyautogui.moveTo(*b,duration=0.25)#移动鼠标到这个中心位置
return b #返回中心位置坐标
else:
return []#没找到和找到多个都返回空值
把答题流程变成一个列表实现顺序化操作
def lianxi():
for i in ['xuexi.png', 'xuexi2.png', 'dati.png', 'lianxi.png', 'dianbengdui.png',
'zhengque.png', 'querendaan.png', 'xiayiti.png', 'zhengque.png',
'querendaan.png', 'xiayiti.png', 'jiesulianxi.png',
'cha.png', 'cha.png']:
xy = find_bmp_all(i)#按顺序传入图片查找,因为我们的选项都是固定的A选项所以,流程很粗暴不需要审题判断就可以直接选。
if xy:#如果找到了,就点击找到的坐标
pyautogui.click(*xy)
time.sleep(2)
那如果需要查找答案怎么办呢,思路
1、把要获取的复制到剪切板,然后剪切板读取,但是本次在模拟器下发现模拟器里边的东西和剪切板库工作不正常,既然不正常就不深研究了,我这个目标APP点击答案解析是可以直接显示答案的例如 正确答案:1、2、3、4 这样的结构,但是要你自己再勾选一遍他给的答案。那么~
2、 思路变更为先点击答案解析,全屏找 (正确答案:) 这几个字,然后根据找到的坐标确定答案所在的大体坐标,然后小区域找图执行四次分表找1,2,3,4 把找到的添加到一个列表中,然后用一个FOR循环取出找出的列表然后分别找对应的ABCD项并打钩。
def qiandao():
for i in ['xuexi.png', 'xuexi2.png','wode.png' ,'chakanjiexi.png']: #先到固定签到页面点击答案解析
xy = find_bmp_all(i)
if xy:
pyautogui.click(*xy)
time.sleep(2)
time.sleep(4)#好好睡一觉
xy = list(pyautogui.locateAllOnScreen('qiandaodaan.png', confidence=0.9))#找 正确答案: 这个位置
print('123213',xy[0])
num_all=[]
for i in ['1.png','2.png','3.png','4.png']: #循环小区域找1,2,3,4
yes_no= list(pyautogui.locateAllOnScreen(i,confidence=0.9, region=(xy[0][0], xy[0][1]-50, 300,100)))
print(yes_no)
if yes_no :#有就添加到列表
num_all.append(int(i[0]))
print(num_all)
pyautogui.moveRel(0,-300) #鼠标向上移动300
time.sleep(0.5)
pyautogui.scroll(300) #上滚一下轮300,把答案选项都弄到屏幕中别遮挡
time.sleep(1)
for i in num_all:#根据列表选择寻找的图片和次数
xy_0=find_bmp_all('xuanze%d.png'%i)
print(xy_0)
if xy_0:
pyautogui.click(*xy_0)
time.sleep(1)
else:
print('meizhaodao')
xy_0 = find_bmp_all('qiandaoquerendaan.png') #选好了点确认答案
print(xy_0)
time.sleep(1)
if xy_0:
pyautogui.click(*xy_0)
time.sleep(1)
xy_0 = find_bmp_all('qiandaoxiayiti.png')#点下一题
print(xy_0)
time.sleep(1)
if xy_0:#找到了点击
pyautogui.click(*xy_0)
time.sleep(1)
else :#如果找不到,那应该是没题了,找完成按钮
xy_0 = find_bmp_all('qiandaowancheng.png')
if xy_0:
pyautogui.click(*xy_0)
以下是使用到的截图图标。
总结,这是一次使用记录,其实技术含量不高但是逻辑和业务紧密结合,本着能用即可的原则简单粗暴的制作了这个么程序。制作程序用时都没有博客记录的时间长,之所以开贴记录一是我需要自动手机答题打卡这个功能。二是、创造性的用截图识别找答案选项,起码没有使用OCR识别也完成了识别功能。三是、这种开发程序非常乱,还是记录下比较好。
边栏推荐
猜你喜欢

4 路 FMC 接口基带信号处理板(2 个FMC接口、2个FMC+接口)

A Survey of Robust LiDAR-based 3D Object Detection Methods for Autonomous Driving(激光雷达3D目标检测方法)论文笔记

Xilinx UltraScale+ MPSOC(ZU9EG/ZU15EG)高性能 PCIe 数据预处理板

CUDA编程-03:线程层级

Sgm: sequence generation model for multi label classification

5种2D Attention整理(Non-Local、Criss-Cross、SE、CBAM、Dual-Attention)

对比学习损失函数(RINCE/ReLIC/ReLICv2)
![[附代码] 如何用HOG+SVM实现手写数字识别](/img/e1/870aec8bb75c7cf82dee62c68d1009.jpg)
[附代码] 如何用HOG+SVM实现手写数字识别

7种视觉MLP整理(上)

Pointnet++代码详解(一):farthest_point_sample函数
随机推荐
Opencv reads the image under the Chinese path and converts its format without changing the color
The crowdhuman data set is processed according to the generated train Txt separate data set
FMC子卡:4 路 SFP+万兆光纤网络 FMC 子卡
Impact of static keyword on scope and lifecycle
CV-Model【3】:VGG16
李宏毅机器学习2022.07.15--误差
Pointnet++ code explanation (I): farthest_ point_ Sample function
Application and principle of throttle/debounce
Gradle custom plug-in
PyTorch学习笔记【5】:使用卷积进行泛化
基于 VITA57.1 标准的单通道 6GSPS 12 位AD采集,单通道 6GSPS 16 位 DA(AD9176)输出 子卡
CS品牌SD NAND在空气质量检测行业中的应用案例
FMC子卡:8 通道 125MSPS采样率16 位 AD 采集子卡
KU115 FPGA 高性能万兆光纤网络硬件加速卡 / 2 路 10G 光纤数据加速卡
对比学习损失函数(RINCE/ReLIC/ReLICv2)
[speech recognition] Kaldi installation experience
Pointnet++ code explanation (VII): pointnetsetabstractionmsg layer
Pointnet++代码详解(四):index_points函数
QuizCardGame
seq2seq (中英对照翻译)Attention