一个神奇的Python库:PyAutoGUI,玩转微信及各种软件自动化

Python-PyAutoGUI 库详解 PyAutoGUI 是 Python 生态中 ​。 阅读详情

今天和大家分享一个超赞的自动化库–PyAutoGUI,PyAutoGUI 可以让 Python 脚本控制鼠标和键盘,通过代码操作鼠标、键盘自动与其他应用程序交互,该Python包支持在 Windows、macOS 和 Linux 上运行。

开始动手动脑

本地电脑打开 Powershell/Terminal ,切换到 Python 环境,输入以下指令即可安装 PyAutoGUI:

pip install pyautogui

安装好后就可以直接开始使用了。

首先导入包:

import pyautogui

常用基础操作

1、定位: 这是最关键的,找到要点击的位置(像素坐标)。

规定坐标原点是屏幕左上角。 我们可以使用以下指令查看屏幕大小:

# 查看屏幕尺寸,目前只支持在主屏上操作
pyautogui.size()

查看当前鼠标所在位置:

# 查看当前鼠标位置,坐标原点是屏幕左上角
pyautogui.position() 

2、移动鼠标: 找到要点击鼠标位置后,即可开始移动鼠标。 移动鼠标使用moveTo函数,可以通过 duration 参数设置移动速度。

# 在 num_seconds 秒内将鼠标移动到 (x,y)
x,y = (409, 300)
num_seconds = 1
pyautogui.moveTo(x, y, duration=num_seconds)  

还可以使用moveRel函数相对路径移动,将当前位置作为坐标轴原点。

# 在 num_seconds 秒内将鼠标移动到相对当前的位置 (x,y)
x,y = (409, 300)
num_seconds = 1
pyautogui.moveRel(x, y, duration=num_seconds)  

3、点击: 鼠标移动到对应位置后,即可点击了,这是最终操作,点点点~

点击流程是先移动鼠标到指定位置,然后进行点击,使用click函数,参数说明:

  • x,y 鼠标点击位置
  • clicks 点击次数
  • interval 点击频率,如果是1 就是每秒点击1次,直到完成 clicks 次点击
  • button 支持 left right middle,分别对应鼠标左键、右键、中键
x,y = (620, 538)
num_of_clicks = 2
secs_between_clicks = 1
pyautogui.click(x=x, y=y, clicks=num_of_clicks, interval=secs_between_clicks, button='left')

应用案例1:关注公众号太多,程序帮你批量取关

766个,真难顶!每天公众号里都有如潮水般的消息涌出,久而久之就懒得去看了,但其中也有很多关键信息,为提高阅读效率,先批量取关,然后根据需要再关注吧~

分析自动化步骤

先看手动取关步骤:

  • 点击联系人-公众号(直接手动)
  • 点开要取关公众号-点击查看历史消息
  • 点击已关注-点击不再关注,即可

从上面步骤不难分析出,可以自动化操作的是后两步,总共涉及4个需要点击的地方,正常情况这四个地方不会有变化,所以我们只需找到这四个地方坐标,然后开启自动化,按顺序点击即可。

找要点击位置坐标

比较简单的方法是直接将鼠标放到对应位置,然后使用pyautogui.position()获取鼠标所在位置。

这样操作的前提是你得有两个屏幕,不然你没地方运行代码查坐标。当然还有一种方法就是使用截屏,去看对应位置的像素坐标。

  • 要取关公众号坐标:Point(x=388, y=386)
  • 查看历史消息坐标:Point(x=861, y=342)
  • 已关注坐标:Point(x=704, y=373)
  • 不再关注坐标:Point(x=891, y=539)
测试自动化

有了前面学习分析,写出自动化代码不难,一个for循环,然后里面点击 点击 点击 点击即可,代码如下。

def click_btn(x,y):
    num_of_clicks = 1
    secs_between_clicks = 1
    pyautogui.click(x=x, y=y, clicks=num_of_clicks, interval=secs_between_clicks, button='left')

# 自动化间隔
pyautogui.PAUSE = 1
for i in range(3):
    # 点开`要取关公众号`-点击`查看历史消息`
    click_btn(388,386)
    print("点击了 要取关公众号")
    click_btn(861,342)
    print("点击了 查看历史消息")
    # 点击`已关注`-点击`不再关注`,即可
    click_btn(704,373)
    print("点击了 已关注")
    click_btn(891,539)
    print("点击了 不再关注")
    break

实际运行发现了一个问题,就是 要取关公众号 位置是不变的,但其它的 查看历史消息、已关注 是会受公众号简介内容长短而变化的,公众号简介长,按钮位置就会下移。

如何定位 查看历史消息、已关注 按钮位置成了现在的主要问题!

主要问题:根据文字定位

查了会资料,发现 pyautogui 有一个内置函数就支持通过指定内容来查找对应内容所在位置,这里用到的就是locateOnScreen函数,其原理是通过图像识别去匹配需要查找内容在图片中的像素区域位置。以下是其工作原理的简要描述:

  1. 截屏:首先,pyautogui 会获取当前屏幕的截图。

  2. 模板匹配:然后,pyautogui 将你提供的参考图像(模板)在截取的屏幕图像上移动,尝试在屏幕上找到一个位置,使得参考图像与屏幕截图的某个区域的匹配度最高。

  3. 像素比较:在模板匹配过程中,算法会对参考图像和屏幕截图的每个像素进行比较,计算它们之间的相似度。相似度通常是通过计算颜色差异来评估的。

  4. 确定位置:如果找到了一个区域,其与参考图像的相似度超过了设定的阈值(有时你可以设置一个confidence参数来指定这个阈值),pyautogui 便会返回这个区域的坐标和大小。这个坐标是屏幕截图上参考图像左上角的位置。

  5. 返回结果:如果找到了匹配的区域,pyautogui 返回一个包含了left, top, width, height的元组或矩形对象;如果没有找到匹配区域,它会返回None。

主要参数解析:

  • image:这是一个字符串或Pillow的Image对象,指定要在屏幕上查找的图像。如果是字符串,它应该是图像文件的路径。
  • confidence:可选参数,指定匹配的可信度阈值,介于0到1之间。一个更高的值意味着更精确的匹配,但可能导致没有找到匹配项。默认情况下,这个值是未设置的,但是如果安装了OpenCV,可以使用这个参数。
  • region:可选参数,一个四元组(left, top, width, height),指定屏幕上一个区域来限制搜索范围。这可以提高搜索速度并减少误匹配。

经过多次测试发现 locateOnScreen 匹配出来的坐标 x、y 值都是原位置的2倍,所以得到了查找 查看历史消息、已关注 按钮位置的方法,代码如下:

text_location = pyautogui.locateOnScreen(image='ckls.jpg', confidence=0.7)
click_btn(text_location.left/2+15, text_location.top/2+4)
print("点击了 查看历史消息")
text_location = pyautogui.locateOnScreen(image='ygz.jpg', confidence=0.7)
click_btn(text_location.left/2+25, text_location.top/2+10)
print("点击了 已关注")

其中 ckls.jpg、ygz.jpg 为 查看历史消息、已关注 截图。

再次测试自动化

结合前面分析,将代码稍作修改即可,测试的时候发现新问题,点击查看历史消息后,公众号详情页面加载需要时间,如果直接执行点击已关注可能会出现错误,所以代码里在点击查看历史消息后加了time.sleep(1.5)给点缓冲时间,具体代码如下:(大家复现的时候里面的坐标需要改成大家屏幕对应的,位置分析方法前面已经分享过了)

import pyautogui
import time
def click_btn(x,y):
    num_of_clicks = 1
    secs_between_clicks = 1
    pyautogui.click(x=x, y=y, clicks=num_of_clicks, interval=secs_between_clicks, button='left')

# 自动化间隔
for i in range(671):
    try:
        print(f"正在取关第{i+1}个公众号号")
        # 点开`要取关公众号`-点击`查看历史消息`
        click_btn(509,497)
        print("点击了 要取关公众号")
        text_location = pyautogui.locateOnScreen('ckls.jpg', confidence=0.7)
        click_btn(text_location.left/2+15, text_location.top/2+4)
        # print("点击了 查看历史消息")
        # 上一步后加载页面需要时间
        time.sleep(1.5)
        text_location = pyautogui.locateOnScreen('ygz.jpg', confidence=0.7)
        click_btn(text_location.left/2+25, text_location.top/2+10)
        # print("点击了 已关注")
        click_btn(949,620)
        print("点击了 不再关注")
    except Exception as e:
        continue

运行结果: e13997cd84af725ec1bd7eb218239d4a.gif

如果想要更多自动化源码,或者交流Python相关问题,可以私信我或者评论区提问。

---------------------------END---------------------------

题外话

感谢你能看到最后,给大家准备了一些福利!

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。


👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img

二、Python兼职渠道推荐*

学的同时助你创收,每天花1-2小时兼职,轻松稿定生活费.
在这里插入图片描述

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

若有侵权,请联系删除

一个神奇的GUI自动化测试库-PyAutoGui 看到这个库的时候,单单从名字就感觉到两个字“简单”,特别容易理解它是用来做什么的,深入了解之后感觉的还是两个字“简单”。这对自动化测试来说便是一个天大的乐事,因为很多工具庞大复杂,仅仅是写一个hello world需要的环境,需要了解的东西比c++,java还难。 PyAutoGUI作为GUI自动化神器,简单高效、函数分类清晰,它被awesome-python、awesome-python-cn收录 现在我就带你们走进PyAutoGUI~ 1. PyAutoGui是什么? PyAutoGui是一 阅读详情

相关推荐

Python--界面UI控制,模拟键鼠操作的模块pyautogui(超详细用法)

详细介绍如何使用 pyautogui 实现鼠标控制、键盘控制、界面操作、图像匹配等功能。

实践出真知 1万+

python自动化神器:pyautogui

它还提供了一些额外的功能,例如捕捉屏幕截图、识别颜色和图像等,以及其他一些实用工具,例如获取屏幕尺寸和鼠标位置。python移动鼠标、点击键盘非常快,可能会造成其他可能问题,为了及时中断,PyAutoGUI提供了一个保护措施。例如,当设置confidence为0.5时,函数将会搜索与给定图像相匹配的区域,并且只有当置信度大于等于0.5时,函数才会返回该区域的位置。因此,confidence的值可以影响函数的性能和准确性,取决于您所需要的搜索结果的精度和速度。获取搜索框位置,单击输入账号,回车,到聊天界面。

Python栈 1万+

Pyautogui——一个神奇且实用的第三库-1

Pyautogui系列第一期 Pyautogui 简介 想要弄明白 Pyautogui 的名字很简单,Pyautogui可以拆分为三个单词: py —— Python auto —— 自动 gui —— 图形用户界面 也就是说,Pyautogui是一个Python的自动控制GUI的第三方库。 那么自动控制GUI可以干什么呢? 自动执行工作 执行重复性工作 自动执行重复性工作 ps:重要的事情说三遍 哈哈哈,有了Pyautogui妈妈再也不用担心我的工作啦~ Pyautogui 如何来帮助你执行工作 Py

KeNNethZbW的博客 1342

【pyautogui】PyAutoGUI 的简单使用

PyAutoGUI是一个纯Python的GUI自动化工具,通过它可以让程序自动控制鼠标和键盘的一系列操作来达到自动化测试的目的。PyAutoGUI设计简洁,全部被封装在pyautogui单个模块中,因此Python程序中只要之后便可通过符号访问pyautogui中的函数、变量。pyautogui大致分为通用功能、鼠标控制、键盘控制、屏幕窗口、消息窗 5 大类。

读书笔记 1万+

10个非常有趣的Python库

Python语法简单,功能强大,可以干很多事情,原因就是因为它有强大的库支持,有很多很多现成的轮子可以用,你只要负责搭建应用即可。今天菜鸟哥给大家推荐10个非常有趣的Python ,一定会让你爱不释手的。 1. Python假消息生产器 这个库叫Faker很有趣,可以创建一个程序来生成虚假数据,如姓名、电子邮件或详细的虚假个人资料,其中包含一个人的所有信息。玩数据分析的时候经常会用到这个库。 Faker在github上收获了12800颗星,还是蛮好的一个库。可以pip3 install

JanLEE 1581

ubuntu18.04安装Nvidia显卡驱动后黑屏及网络、蓝牙驱动消失的解决方案

ubuntu18.04安装Nvidia显卡驱动后黑屏及网络、蓝牙驱动消失的解决方案

weixin_40735291的博客 6617

python opencv 界面按钮_PyAutoGUI:自动化键鼠操作的Python类库

有些朋友可能玩过按键精灵,一个用来操作键盘鼠标完成一些自动化工作的软件。其实如果你学了Python的话,完全用不着按键精灵这种东西了。因为广泛的Python类库里,就有PyAutoGUI这样可以变成控制键盘鼠标的类库,有了它,就可以用Python随心所欲的操作电脑了。而且这个类库是跨平台的,Windows、Linux、macOS都可以用,是不是很吸引人呢?Github页面安装和使用安装P...

weixin_39957647的博客 901

Vue 实现华视身份证读卡器功能

在www.downcc.com下载“华视cvr100驱动”安装程序; 华视电子官网有相应的文档说明和程序下载 一、服务安装 选择安装目录: 启动读卡服务: 安装成功会有如图所示: 注意事项: 安装开发包必须使用管理员权限,因为windows服务和读卡器设备驱动程序均需要管理员权限,否则会安装失败。 win10需要修改组策略才有管理员权限。 二、服务的使用 打开浏览器,输入地址http://127.0.0.1:19196/mainpage,回车 点击openDevice: 点.

zyqgt960812的博客 6501

github python 画图_PyAutoGUI:自动化键鼠操作的Python类库

有些朋友可能玩过按键精灵,一个用来操作键盘鼠标完成一些自动化工作的软件。其实如果你学了Python的话,完全用不着按键精灵这种东西了。因为广泛的Python类库里,就有PyAutoGUI这样可以变成控制键盘鼠标的类库,有了它,就可以用Python随心所欲的操作电脑了。而且这个类库是跨平台的,Windows、Linux、macOS都可以用,是不是很吸引人呢?Github页面安装和使用安装P...

weixin_36477752的博客 284

在unity urp项目中 通过图片创建材质(透明光晕)

unity中通过图片创造材质(urp管道)

m0_49721415的博客 1537

Cadence17.2 > Allegro > 检查PCB Layout信号线组等长

Cadence17.2 > Allegro > 检查PCB Layout等长和配线

DL_62532的专栏 1万+

墙裂推荐!10个非常有趣的Python库!

这是“菜鸟学Python”,第“500”篇原创大家好,我是菜鸟哥!学Python就等你啦!爆款文案1).卧槽!Pdf转Word用Python轻松搞定!2).学Python真香!我用100行...

cainiao_python的博客 3346

OpenVPN 新增 windows 客户端

虚拟私人网络(Virtual Private Network,简称VPN)是一种网络技术,它允许用户通过公共网络(如互联网)建立一个安全的连接通道。本文介绍如何添加 windows 客户端。

利昂的技术存档 3765

pywechat完全指南:基于pywinauto的PC微信自动化RPA工具,零基础也能玩转微信机器人

想不想让电脑替你自动发微信、自动回消息、自动接电话?**pywechat** 就是这样一个基于 **pywinauto** 实现的 Windows PC 微信自动化 RPA 工具,它几乎覆盖了 PC 微信内置的全部操作:发消息、发文件、自动回复、好友管理、群聊管理,甚至还能自动接听语音电话。更棒的是,它完全模拟真人操作微信,零基础的小白也能轻松上手,打造属于自己的**微信机器人**。 [![py

gitblog_01061的博客 345

simulink的电动汽车制动系统热管理仿真

本文系统研究了电动汽车制动系统热管理仿真技术。通过建立机电液多物理场耦合模型,分析了不同工况下的动态热平衡特性。提出基于MPC的动态调节和NSGA-II多目标优化算法,使电池温度波动降低60%。创新性采用石墨烯相变材料与微通道液冷复合技术,冷却系统能耗减少40%。研究构建了完整的工程验证平台,涵盖200kW电制动测试台和高精度热成像系统。展望指出,未来将结合Transformer预测和强化学习算法,进一步优化热管理策略。该研究为电动汽车制动系统热管理提供了从理论建模到工程实施的完整解决方案。

xiaoheshang_123的博客 121

Qt/C++ 音视频开发 - FFmpeg 安卓版

通过将 FFmpeg 集成到 Qt/C++ 项目中,我们可以实现强大且灵活的音视频处理功能。本文介绍了在安卓平台上使用 FFmpeg 的基本步骤,包括初始化、解码、处理和编码等。实际应用代码示例展示了如何在安卓设备上播放视频。

走向CTO的路上... 1190

chatgpt赋能python:玩转Python:8个有趣的开源项目

本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。

m0_56069948的博客 1081

如何理解S参数的三大特性

提到S参数的时候经常会涉及一些概念,如无源性、因果性、互易性等,本文逐一介绍这些特性的概念、成因以及判断方式。

一只豌豆象的博客 4495

10分钟教你用 Python 控制键盘和鼠标

​您仍在努力在计算机上双击或提交表单吗? 如果我告诉你我可以通过python提前写下相关的操作说明,让它帮你操作鼠标和键盘,但你却在和姐姐聊天,不是很神奇吗? 第一,Pyauogui库 我们可以首先安装pyauogui库,通过它我们可以编写一些Python脚本来控制鼠标和键盘。例如,可以定义鼠标的点击位置、键盘的输入时间等,实现所有要操作的软件应用程序的自动操作。值得一提的是,它可以...

1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

AI自动化生成微信二维码:基于豆包API与Python的批量处理方案

二维码技术作为信息传递的便捷载体,其核心原理是将文本、链接等数据编码为特定图形矩阵,通过扫描设备快速解码还原。在工程实践中,二维码生成常与自动化流程结合,以提升批量处理效率。AI技术的融入进一步扩展了其应用价值,通过自然语言理解与文本生成能力,能够动态创建个性化内容并自动编码为二维码。这一技术组合在电商客服、社群运营、活动推广等场景中尤为实用,可实现从可变数据到定制化二维码的端到端自动化。本文以豆包AI和Python qrcode库为例,详细解析如何构建一个稳定、可扩展的批量二维码生成工作流,涵盖API调用

weixin_34194087的博客 426

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Python微信自动抢红包程序(OpenCV,pyautogui)

微信自动抢红包教程有很多,有通过分析安卓组件写的,由于对java不熟悉,就想通过监视电脑屏幕的方法做,也就是OpenCV,或者卷积神经网络,刚好以前项目做到过。在查询资料的过程中有发现一个神奇的库——pyautogui。也可以识别屏幕元素,做模板匹配,翻看它的源码发现了cv2这个函数,仔细一看,也是用的OpenCV这个库。里面三个图片对于是这样的,下载到不同的电脑上需要自己截图保存在IMAGES这个文件夹内。关于pyautogui库的使用网上有很多,这里给出一些常用的用法。好的,废话不多说,上干货。

m0_59522760的博客 4344

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: Python中进行特征重要性分析的9个常用方法
下一篇: Python中级知识梳理
Python_P叔
博客等级 码龄3年 5447粉丝 827原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值