【python自动化神器pyautogui使用步骤】

news2024/12/24 17:13:44

python自动化神器pyautogui使用步骤

这篇文章主要给大家介绍了关于python自动化神器pyautogui使用步骤的相关资料,在Python当中不仅代码简单,而且有着非常丰富的模块,pyautogui就可以称之为自动化操作的"神器",需要的朋友可以参考下

文章目录

  • python自动化神器pyautogui使用步骤
    • 一、pyautogui是什么?
    • 二、使用步骤
      • 1.安装和引入库
      • 2.基本操作
        • (1)鼠标控制
        • (2)键盘控制
        • (3)屏幕截图
        • (4)图片位置识别
        • (5) 获取鼠标位置
        • (6)其他
    • 三、自动发消息给对象
      • 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``)
(5) 获取鼠标位置
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()
(6)其他

保护措施:

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=True
wechat_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 pyperclip

pyautogui.PAUSE=1#每次延迟1秒

pyautogui.FAILSAFE=True

wechat_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://www.coloradmin.cn/o/1085140.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于SpringBoot2.x集成SpringSecurity+JJWT(0.7.0-->0.11.5)生成Token登录鉴权的问题

项目场景: 问题:遵循版本稳定的前提下,搭建权限认证框架,基于SpringBoot2.xSpringSecurity向上依赖jjwt0.7.0构建用户认证鉴权,起因是某L觉得jjwt0.7.0版本,官方已经放弃维护,且从maven仓库对0…

C++11发展史

文章目录 1.ChatGpt怎么说?2.C官方文档3.C11的诞生4.C11的意义 1.ChatGpt怎么说? C11是C编程语言的一个重要版本,也被称为C0x。它于2011年发布,并引入了许多新的特性和改进,使得C编程更加现代化和强大。 下面是C11的一些主要特性和发展历…

IDEA报Error:java:无效的源发行版13解决方式

出现问题原因:原本项目是spingboot2.0版本开发的,IDEA启动正常,后期新项目使用spingboot3.0,通过原来的IDEA版本及JDK1.8启动报上述错误,以下为版本文件 解决方式: 项目背景:项目已经上线&…

C++算法:图中的最短环

题目 现有一个含 n 个顶点的 双向 图,每个顶点按从 0 到 n - 1 标记。图中的边由二维整数数组 edges 表示,其中 edges[i] [ui, vi] 表示顶点 ui 和 vi 之间存在一条边。每对顶点最多通过一条边连接,并且不存在与自身相连的顶点。 返回图中 …

【Python中单引号、双引号和三引号具体的用法及注意点】

Python中单引号、双引号和三引号具体的用法及注意点 这篇文章主要给大家介绍了关于Python中单引号、双引号和三引号具体的用法及注意点的相关资料,Python中单引号、双引号、三引号中使用常常困惑,想弄明白这三者相同点和不同点,需要的朋友可以参考下 文章目录 Python中单引号、…

Zabbix监控系统详解1 :zabbix服务部署、自定义监控项、自动发现与自动注册

文章目录 1. Zabbix 概述1.1 简介1.2 zabbix的功能组件1.2.1 Zabbix Server1.2.2 数据库1.2.3 Web 界面1.2.4 Zabbix Agent1.2.5 Zabbix Proxy1.2.6 Java Gateway 1.3 工作原理1.4 常用端口号1.5 zabbix中预设的键值1.6 自定义监控项相关流程1.7 邮件报警配置思路1.8 Zabbix自动…

气膜建筑的可持续性:能源效益与环境影响

气膜建筑作为现代建筑技术的一种创新形式,不仅为城市景观增添了未来感,同时也在建筑领域引发了可持续性发展的讨论。本文将探讨气膜建筑在可持续性方面的关键议题,特别聚焦于其能源效益和环境影响,以期为未来气膜建筑设计和规划提…

dm关键字提示报错

问题出现 还是那个项目,然后呢因为其中涉及到了关键字,导致查询报错, 提示是REFERENCE出现错误。 问题处理 对于所有的关键字增加双引号可以处理。

服务器中了balckhoues勒索病毒怎么办?勒索病毒解密,数据恢复

近日,云天数据恢复中心发现,有多位用户的服务器中了一种名为balckhoues的勒索病毒,因为绝大多数用户是第一次遇到这种情况,所以对这种类型的勒索病毒并不是很了解。那接下来我们将对balckhoues勒索病毒做一个分析。 中毒特征 服务…

10.12作业

以下是一个简单的比喻,将多态概念与生活中的实际情况相联系: 比喻:动物园的讲解员和动物表演 想象一下你去了一家动物园,看到了许多不同种类的动物,如狮子、大象、猴子等。现在,动物园里有一位讲解员&…

运放供电设计 以及电压反馈电流反馈选择

因为OPA350可以直接驱动大电容 不需要对称,只要输出在电压范围内就可以 注:电流反馈运放一定要注意电阻取值,并且不能并电容

如何swagger关闭及给swagger加参数信息

项目的swagger方便研发人员调试,上线之后需要将swagger关闭这时候需要给原来的Configuration注解换成ConditionlOnProperty注解及可。注解参数信息 ConditionalOnProperty(name "swagger.enable", havingValue "true")若swagger想加入额外参…

Halcon我的基础教程(一)(我的菜鸟教程笔记)-halcon仿射变换(Affine Transformation)的探究与学习

目录 什么是仿射变换?仿射变换有哪些方式?任何仿射变换都能由以下基本变换构造而来:在Halocn中,仿射变换具有重要的作用,那我们本文章重点讨论仿射变换基础性知识。 使用Halcon中的重要算子,仿射变换一般解决步骤,案例应用会在以后的文章中我们重点解答与讨论。 我们首先…

基于 ceph-deploy 部署 Ceph 集群 超详细

Ceph part1 一、存储基础1.1 单机存储设备1.2 单机存储的问题1.3 单机存储问题的解决方案1.3.1 商业存储解决方案1.3.2 分布式存储(软件定义的存储 SDS) 二、分布式存储2.1 常见的分布式存储2.2 分布式存储的类型 三、Ceph概述3.1 Ceph简介3.2 Ceph 优势…

【另类加法】

目录 一、题目解析二、算法原理三、代码实现 一、题目解析 二、算法原理 三、代码实现 class Solution {public:int add(int A, int B){if(A 0)return B;else if(B 0)return A;elsereturn add(A^B, (A&B)<<1);} }

ASEMI整流桥KBU810参数,KBU810特性

编辑-Z KBU810参数描述&#xff1a; 型号&#xff1a;KBU810 最大直流反向电压VR&#xff1a;1000V 最大工作峰值反向电压VRWM&#xff1a;700V 最大平均正向电流IF&#xff1a;8A 非重复正向浪涌电流IFSM&#xff1a;300A 操作和储存温度范围TJ ,TSTG&#xff1a;-55 t…

LeetCode【1】两数之和

题目&#xff1a; 代码&#xff1a; public int[] twoSum(int[] nums, int target) {int[] result new int[2];Map<Integer, Integer> map new HashMap<>();// for (int i 0; i < nums.length; i) { // 这么写不能防重复啊&#xff01;注意这里不…

低功耗Sub-1G全频段收发一体芯片DP4306 适用无线对讲机 工业数据采集等应用

无线电对讲机既是移动通信中的一种专业无线通信工具&#xff0c;又是一种能满足人们生活需要的具有消费类产品特点的消费工具。顾名思义移动通信就是通信一方和另一方在移动中实现通信。 它是一种无线的可在移动中使用的一点对多点进行通信的终端设备&#xff0c;可使许多人同时…

【工具软件】在 window11 下使用微信读书app

作者&#xff1a;你们是大牛 链接&#xff1a;https://www.zhihu.com/question/340264583/answer/2439158730 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 在windows11上可以使用wsa, 也就是windows下的安卓子系统…

完美解决 :ModuleNotFoundError: No module named ‘dlib‘

目录 1&#xff0c;报错信息 解决办法&#xff1a; 1&#xff0c;报错信息 尝试 pip install dlib 报错&#xff1a; 尝试解决办法&#xff1a; Python3.6版本——下载文件&#xff1a; dlib-19.6.0-cp36-cp36m-win_amd64.whl 下载网址 :dlib PyPI Python3.7版本——下载…