python自动化神器:pyautogui

article/2025/8/25 10:36:44

详情可访问:pyautogui官网地址,关注本专栏,学习自动发消息给对象

文章目录

  • 一、pyautogui是什么?
  • 二、使用步骤
    • 1.安装和引入库
    • 2.基本操作
      • (1)鼠标控制
      • (2)键盘控制
      • (3)屏幕截图
      • (4)图片位置识别
      • (6) 获取鼠标位置
      • (7)其他
  • 三、自动发消息给对象
    • 1.截图操作
    • 2.python代码
  • 完整代码``
  • 总结


一、pyautogui是什么?

pyautogui是一个Python模块,可以模拟用户在屏幕上的鼠标和键盘操作。它可以自动化鼠标和键盘输入,可以用于各种自动化任务,例如GUI测试、自动化数据输入、自动化游戏玩法等。pyautogui提供了一组函数来控制鼠标和键盘,例如移动鼠标、单击、双击、右键单击、按下和释放键等。它还提供了一些额外的功能,例如捕捉屏幕截图、识别颜色和图像等,以及其他一些实用工具,例如获取屏幕尺寸和鼠标位置。

二、使用步骤

1.安装和引入库

pip install pyautogui
import pyautogui

2.基本操作

(1)鼠标控制

	PyAutoGUI可以模拟鼠标的点击和移动。以下是一些基本操作:moveTo(x, y):将鼠标移动到屏幕上的指定位置。click(x=None, y=None, button='left'):在指定位置单击鼠标左键、右键或中键。doubleClick(x=None, y=None, button='left'):在指定位置双击鼠标左键、右键或中键。rightClick(x=None, y=None):在指定位置单击鼠标右键。middleClick(x=None, y=None):在指定位置单击鼠标中键。dragTo(x, y, duration=0.5):将鼠标拖动到指定位置。'

实例:

import pyautogui# 将鼠标移动到屏幕中央
pyautogui.moveTo(pyautogui.size()[0]/2, pyautogui.size()[1]/2)# 在屏幕中央单击鼠标左键
pyautogui.click()

(2)键盘控制

PyAutoGUI还可以模拟键盘的输入。以下是一些基本操作:

typewrite(message, interval=0.1):将字符串输入到键盘,可以设置键入每个字符的时间间隔。
press(key):按下指定的键。
release(key):释放指定的键。
hotekey('ctrl',key)::按下组合键

以下是一个例子,演示如何将“Hello, world!”字符串键入到计算机上:

import pyautogui# 将“Hello, world!”字符串键入计算机
pyautogui.typewrite('Hello, world!')
# 模拟按下键盘的A键
pyautogui.press('a')# 模拟释放键盘的A键
pyautogui.release('a')#组合键
pyautogui.hotkey('ctrl','v')

(3)屏幕截图

PyAutoGUI可以截取屏幕上的图像。以下是一个基本操作:

screenshot():截取屏幕上的图像,并返回PIL图像对象。

以下是一个例子,演示如何截取整个屏幕的图像:

import pyautogui# 截取整个屏幕
screenshot = pyautogui.screenshot()# 显示截图
screenshot.show()

也可以截取指定位置尺寸的图片

imag=pyautogui.screenshot(region=(0, 0, 300, 400))#(x,y,w,e)4个点的位置
imag.save('1.png')#保存位置

(4)图片位置识别

PyAutoGUI可以识别图片所在的位置

img_path='location.png'
location=pyautogui.locateOnScreen(img_path)
print(location)

但是很多时候图片识别不到,返回None,这个时候就要对识别参数进行设置
confidence 是一个可选参数,表示搜索图像时所需的置信度或准确度。它是一个介于0到1之间的浮点数,表示函数在搜索图像时所需的匹配准确度。值越高,匹配准确度就越高,但搜索速度可能会变慢。值越低,则匹配准确度可能会降低,但搜索速度会更快。

例如,当设置confidence为0.5时,函数将会搜索与给定图像相匹配的区域,并且只有当置信度大于等于0.5时,函数才会返回该区域的位置。因此,confidence的值可以影响函数的性能和准确性,取决于您所需要的搜索结果的精度和速度。

pyautogui.locateOnScreen(confidence=0.5)

(6) 获取鼠标位置

import pyautogui# 获取鼠标的当前位置
x, y = pyautogui.position()
print(f"鼠标当前位置:{x}, {y}")

也可以获取图片上鼠标的位置

import pyautogui
import time
def get_mouse_postion():time.sleep(5)print('开始获取鼠标位置')time.sleep(1)x, y = pyautogui.position()postion = '鼠标坐标带你({},{})'.format(str(x).rjust(4), str(y).rjust(4))pix = pyautogui.screenshot().getpixel((x, y))  # 获取鼠标所在屏幕点的RGB颜色postion += 'RGB:(' + str(pix[0]).rjust(3) + ',' + str(pix[1]).rjust(3) + ',' + str(pix[2]).rjust(3) + ')'print(postion)pyautogui.click(x, y)print(x,y)with open('坐标.csv','a',encoding='utf-8')as f:f.write(str(x))f.write(',')f.write(str(y))f.write('\n')print('结束')
get_mouse_postion()

(7)其他

保护措施:
python移动鼠标、点击键盘非常快,可能会造成其他可能问题,为了及时中断,PyAutoGUI提供了一个保护措施。当pyautogui.FAILSAFE = True时,把鼠标光标在屏幕左上角,PyAutoGUI函数就会产生pyautogui.FailSafeException异常,中断程序。如果想禁用这个特性,把FAILSAFE设置成False:

import pyautogui
pyautogui.FAILSAFE = False

时间延迟
pyautogui.PAUSE 设置延迟,提供页面反映时间,避免页面还没架加载好久执行

import pyautogui
pyautogui.PAUSE = 2.5

一、模块需要

  • pyautogui
  • pyperclip
pip install pyautogui
pip install pyperclip

pyautogu上篇文章已经详细说明了,但是由于输入格式问题,只能输入英文,所以pyperclip 将文本内容复制到粘贴板,然后用pyautogu进行键盘粘贴操作

txt='I love you'
pyperclip.copy(txt)
pyautogui.hotkey('ctrl','v')

三、自动发消息给对象

1.截图操作

分别截取微信PC的图像,以及微信聊天框中的搜索框图片,如下在这里插入图片描述
在这里插入图片描述
尽量截图小点,分别保存成1.png,2.png

2.python代码

设置配置

pyautogui.PAUSE=1#每次延迟1秒pyautogui.FAILSAFE=Truewechat_id='jiejieluoguo'#你对象的微信账号

返回主界面

pyautogui.hotkey('win', 'm')

获取微信图标位置并点击

#获取微信图标位置,并点击
location1=pyautogui.locateOnScreen('1.png', confidence=0.7)
print(location1)
pyautogui.doubleClick(location1)

获取搜索框位置,单击输入账号,回车,到聊天界面

location2=pyautogui.locateOnScreen('2.png', confidence=0.7)
print(location2)
pyautogui.doubleClick(pyautogui.center(location1))
pyautogui.typewrite(wechat_id)#写入微信账号
pyautogui.press('enter')#回车

创建一个名为语料的文本,存入你想说的话(可以上网搜一搜相关语录)
在这里插入图片描述
读取语录中的内容

with open('语录','r',encoding='utf-8')as f:lists=f.readlines()

然后循环粘贴回车发送

for i in lists:i=i.strip()pyperclip.copy(i)#复制到剪切板pyautogui.hotkey('ctrl','v')#粘贴到输入框,回车pyautogui.press('enter')

完整代码``

import pyautogui
import pyperclippyautogui.PAUSE=1#每次延迟1秒pyautogui.FAILSAFE=Truewechat_id='jiejieluoguo'#你女朋友微信账号pyautogui.hotkey('win', 'm')#获取微信图标位置,并点击
location1=pyautogui.locateOnScreen('1.png', confidence=0.7)
print(location1)
pyautogui.doubleClick(location1)location2=pyautogui.locateOnScreen('2.png', confidence=0.7)
print(location2)
pyautogui.doubleClick(location2)
pyautogui.typewrite(wechat_id)#写入微信账号
pyautogui.press('enter')#回车with open('语录','r',encoding='utf-8')as f:lists=f.readlines()for i in lists:i=i.strip()pyperclip.copy(i)#复制到剪切板pyautogui.hotkey('ctrl','v')#粘贴到输入框,回车pyautogui.press('enter')

总结

需要更多了解关于pyautogui知识,可以访问官址https://pyautogui.readthedocs.io/en/latest/

希望大家多多支持,一起努力学习,后续慢慢分享更多新奇有趣的东西


http://chatgpt.dhexx.cn/article/8f0xKLK6.shtml

相关文章

Python基础之pyautogui模块(详细总结鼠标键盘操作)

Python基础之鼠标操作 文章目录 Python基础之鼠标操作1. GUI 控制功能1.1 自动 防故障功能1.2 停顿功能 2. 鼠标操作2.1 控制鼠标移动2.2 控制鼠标点击2.3 控制鼠标拖动2.4 控制鼠标滚动 3. 屏幕处理3.1 获取屏幕截图3.2 识别图像 4. 键盘输入4.1 键盘输入函数4.2 键盘特殊按键…

EDW 模型设计概念

EDW模型设计概念 1、EDW体系架构 2、为何需要企业模型? 数据集市之间数据一致性;包含全部历史的核心数据;一致的事实表和维度等。 3、 EDW数据模型在项目实施中的作用 4、模型总体结构-EM & DataMarts 5、EDW具体实施流程 …

EDW2016|NOSQL异军突起 阿里首发中国企业好声音

美国西部时间4月17日至4月22日,第20届企业数据世界EDW大会在加利福尼亚州圣迭戈(San Diego California)呈现了精彩纷呈的六天五晚议程。 EDW大会全称是Enterprise Data World(即:企业数据世界)&#xff0c…

About EDW时间维度表的建立参考(DWD_CALENDAR)

0. 维度表 1. 创建表 -- Create table create table DWD_CALENDAR (site VARCHAR2(40),factory VARCHAR2(40),period_date DATE,period VARCHAR2(5),shift_start_timekey VARCHAR2(40),shift_end_timekey VARCHAR2(40),dat…

BW:EDW——一次小小的探讨

方其华|北京 2010/9/17 10:46:13 这个有点差别的。我们采用的是EDW的架构。所以到我这里的话。源显示的不是ODS。而是数据源。 郑平深圳 2010/9/17 10:47:04 郑岩|北京(332327496) 2010/9/17 10:50:06 EDW架构? 郑岩|北京(332327496) 2010/9/17 10:50:09 …

EDW DWM CONCEPT

非事实型事实表――factless fact table 在维度建模的数据仓库中,有一种事实表叫Factless Fact Table,中文一般翻译为“非事实型事实表”。在事实表中,通常会保存十个左右的维度外键和多个度量事实,度量事实是事实表的关键所在。…

EDW on Hadoop(Hadoop上的数据仓库)技术选型和实践思考

在这篇文章中, 将讨论EDW on Hadoop 有哪些备选方案, 以及我个人的倾向性, 最后是建构方法. 欢迎转载, 但必须注明原贴(刘忠武, http://www.cnblogs.com/harrychinese/p/edw_on_hadoop.html). 数据仓库发展已经有二十多年了, 我们先看看数据仓库发展的趋势: 在数据规模小的时…

(转载)浅析ODS与EDW 关系

浅析ODS与EDW 关系 刘智琼 (中国电信集团广州研究院广州510630) 摘要 本文重点介绍了企业运营数据仓储(ODS)和企业数据仓库(EDW )的概念,并对ODS与EDW 之间的关系,包括两者相同点与不同点进行了详尽的对比与阐述,文章还对业界公认的ODS和E…

ETL(一):(详细步骤)使用ETL将源数据抽取到EDW层

1、ETL中4大常用客户端 R客户端主要用于创建文件夹,不同的项目主题,应该放在不同的文件夹中; 2、ETL开发流程 ①~③在D客户端中完成;④和⑤在W客户端中完成;⑥在M客户端中完成; 3、需求 需求一&#xff…

浅析ODS与EDW关系(转载)

背景知识:在当今这样一个信息技术发展迅速的时代,数据量也在不断的增长,面临这样的压力,总是会有大神提出一些解决方案。比如高层管理人员希望能查看整个公司的发展业绩,数据仓库(Data Warehouse, DW)正是解决该问题的…

ODS和EDW

企业运营数据仓储(ODS)和企业数据仓库(EDW ) 企业数据架构 EDW主要为企业提供分析决策服务。ODS主要实现企业数据整合、共享和准实时运营监控等功能,ODS是EDW的一个有益的补充和扩展 其中.ADB为应用数据库;A、B、C表示不同类型的数据流动&am…

浅析ODS与EDW 关系(转载)

摘要 本文重点介绍了企业运营数据仓储(ODS)和企业数据仓库(EDW )的概念,并对ODS与EDW 之间的关系,包括两者相同点与不同点进行了详尽的对比与阐述,文章还对业界公认的ODS和EDW 两种不同建设方法也分别进行了说明,并给出了作者认为…

ODS与EDW的区别

项目github地址:bitcarmanlee easy-algorithm-interview-and-practice 欢迎大家star,留言,一起学习进步 根据自己的理解与实际项目经验,说说ODS与EDW的异同。如果有不对的地方,欢迎大家批评指正。 维基百科对于ODS的…

传统数据仓库 DW/EDW/BI/ODS/DM/ETL

DW 数据仓库 数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。 为需要业务智…

范式理解(0范式,1范式,2范式)

https://www.zhihu.com/question/20473040 可以从函数、几何与矩阵的角度去理解范数。 我们都知道,函数与几何图形往往是有对应关系的,这个很好想象,特别是在三维以下的空间内,函数是几何图像的数学概括,而几何图像是…

数据库(四):函数依赖和数据库异常,第一范式,第二范式,第三范式,第四范式

文章目录 前言一、函数依赖二、异常三、第一范式四、第二范式五、第三范式六、BC范式 前言 本文转载于:https://zhuanlan.zhihu.com/p/20028672 在阅读本文时,可以把“关系”理解为数据表。此外还有一个“关系模式”的概念。“关系”和“关系模式”的区…

数据库4范式

范式与公理系统 前言一、函数依赖1.部分函数依赖2.完全函数依赖3.传递函数依赖4.码 二、范式1.第一范式(1nf)2.第二范式(2nf)判断是否是第二范式 3.第三范式(3nf)4.BCNF范式6.第四范式多值依赖 总结 前言 …

数据库的第一范式,第二范式,第三范式,BCNF范式理解

第一范式 属性的原子性 所谓的第一范式就是数据库中的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性,如果出现重复的属性则需要重新构建实体,新的实体由重复的属性构…

第四范式冲刺IPO:4年亏13亿收入逐年翻番,研发工资人均2万

边策 梦晨 发自 凹非寺量子位 | 公众号 QbitAI 知名AI独角兽第四范式,内部详情今天有了完整公开。 中国首个ACM世界冠军戴文渊创办、腾讯红杉加持,股东和客户集齐五大国有银行,创办7年累计吸金66亿,主打的是技术包括“黑魔法”Aut…

数据库六大范式详解

候选码 某一属性组的值能唯一标识一个元组,而其子集不能,则称该属性组为候选码。若一个关系中有多个候选码,则选定其中一个为主码。 例如下图所示的学生表中,学号和姓名都可以唯一标识一个元组,故该表的候选码为学号和…