轻松掌握Python自动化工具,解锁PyAutoGUI的强大功能

news2024/11/24 3:18:12

插入图片

前言

PyAutoGUI是一个用于图像识别和鼠标/键盘控制的Python库。它提供了一组函数和方法,用于自动化屏幕上的鼠标移动、点击、拖拽和键盘输入,以及执行图像识别和处理。本文旨在帮助读者入门 PyAutoGUI,理解其基础概念和掌握最佳实践,从而提高工作效率和准确性。

只要是关于自动化的操作,它都可以完成!

它还是跨平台的!!!

但需要注意的是,PyAutoGUI是基于屏幕坐标的自动化工具,它通过模拟鼠标和键盘操作来实现自动化。所以在一些复杂的情况下,可能需要选择专门的工具来完成自动化任务。


知识点📖📖

安装模块

pip install pyautogui
pip install Pillow

PyAutoGUI 简介

PyAutoGUI是一个用于图像识别和鼠标/键盘控制的Python库。它提供了一组函数和方法,用于自动化屏幕上的鼠标移动、点击、拖拽和键盘输入,以及执行图像识别和处理。

PyAutoGUI的主要作用包括:

  1. 自动化任务:可以使用PyAutoGUI编写脚本来自动执行各种任务,例如自动化数据输入、表单填充、图像处理、报告生成等。

  2. GUI测试:PyAutoGUI可以用于测试图形用户界面(GUI)的应用程序。可以模拟用户的鼠标和键盘操作,以验证应用程序的功能和稳定性。

  3. 屏幕操作:PyAutoGUI允许通过编程方式控制鼠标和键盘,从而执行各种屏幕操作,例如截图、屏幕分辨率设置、窗口管理等。

  4. 图像识别和处理:PyAutoGUI提供了一些函数来进行图像识别和处理。可以使用这些功能来查找屏幕上的特定图像、执行像素级别的操作、比较图像等。

  5. 跨平台支持:PyAutoGUI可以在多个操作系统上运行,包括Windows、macOS和Linux等。

PyAutoGUI是一个强大的自动化工具,特别适用于需要模拟用户操作和控制图形界面的任务。它提供了简单而直观的接口,使得编写自动化脚本变得容易。无论是进行GUI测试、自动化任务还是屏幕操作,PyAutoGUI都可以胜任。

基础使用

这里做一些常用的功能展示,没能详尽展示 PyAutoGUI 的全部功能。

常用操作

import pyautogui

# 移动鼠标到坐标 (100, 200)
pyautogui.moveTo(100, 200)

# 点击鼠标
pyautogui.click()

# 拖动鼠标到新的坐标 (300, 400),持续时间为 1 秒
pyautogui.dragTo(300, 400, duration=1)

# 在当前位置滚动鼠标向上 10 次
pyautogui.scroll(10)

# 按下键盘上的 'A' 键
pyautogui.keyDown('A')

# 输入字符串 'Hello, World!'
pyautogui.typewrite('Hello, World!')

# 截取屏幕截图并保存为文件
screenshot = pyautogui.screenshot('screenshot.png')

# 定位屏幕上指定图像的位置
image_location = pyautogui.locateOnScreen('image.png')
print(f"图像位置:{image_location}")

屏幕和窗口

  • size(): 获取屏幕的宽度和高度。
  • position(): 获取当前鼠标的坐标位置。
  • onScreen(x, y): 检查给定的坐标是否在屏幕上。
  • screenshot(region=None): 捕获屏幕截图。
  • getAllWindows(): 获取当前打开的窗口列表。

示例代码:

import pyautogui

# 获取屏幕的宽度和高度
print(pyautogui.size())

# 获取当前鼠标的坐标位置
print(pyautogui.position())

# 检查给定的坐标是否在屏幕上
print(pyautogui.onScreen(100, 2000))

# 捕获屏幕截图,并保存为demo.png
pyautogui.screenshot().save('demo.png')
# 捕获屏幕截图,左上角坐标为(100,100),宽度和高度为500, 500
pyautogui.screenshot(region=(100, 100, 500, 500)).save('region.png')

# 获取当前打开的窗口句柄列表
print(pyautogui.getAllWindows())

鼠标操作

在PyAutoGUI中,有多个函数可以模拟鼠标点击操作。

  • 这些函数可以用于模拟鼠标点击操作,它们接受一个可选的xy参数,用于指定点击的位置,如果未提供坐标参数,它们将在当前鼠标位置执行点击操作。
  • 可选参数有很多,但一般我们只需要关心 xyduration
    • x,y:坐标位置
    • duration:鼠标移动到xy坐标需要多少秒。默认为0
方法释义
pyautogui.click()该函数模拟鼠标左键单击操作。将鼠标移动到指定的坐标位置(或当前位置),然后执行单击操作
pyautogui.doubleClick()该函数模拟鼠标左键双击操作。
pyautogui.leftClick()该函数模拟鼠标左键单击操作,与click()函数功能相同
pyautogui.rightClick()该函数模拟鼠标右键单击操作。将鼠标移动到指定的坐标位置(或当前位置),然后执行右键单击操作
pyautogui.middleClick()该函数模拟鼠标中键单击操作。将鼠标移动到指定的坐标位置(或当前位置),然后执行中键单击操作。
pyautogui.tripleClick()该函数模拟鼠标左键三击操作。
pyautogui.dragTo()该函数模拟鼠标拖动 (按住按钮时鼠标移动) 到屏幕上的某个点

示例代码:

import pyautogui

# 单击操作
pyautogui.click(x=100, y=200)  # 在指定位置(100, 200)执行左键单击
# 在指定位置(100, 200)执行左键单击,移动时长2秒
pyautogui.click(x=100, y=200, duration=2)  

# 双击操作
pyautogui.doubleClick()  # 在当前鼠标位置执行左键双击

# 右键单击操作
pyautogui.rightClick(x=300, y=400)  # 在指定位置(300, 400)执行右键单击

# 中键单击操作
pyautogui.middleClick()  # 在当前鼠标位置执行中键单击

# 三击操作
pyautogui.tripleClick()  # 在当前鼠标位置执行左键三击

# 拖动操作
pyautogui.dragTo(100, 200)	# 拖动鼠标到指定位置(100, 200)

键盘操作

PyAutoGUI 模拟键盘输入

键盘操作相对简单,以下是一些常用的键盘操作示例代码:

import pyautogui

# 输入单个按键
pyautogui.press('a')

# 输入组合键
pyautogui.hotkey('ctrl', 'c')

# 输入字符串
pyautogui.typewrite('Hello, World!')

# 模拟按下一个键
pyautogui.keyDown(key)

# 模拟释放一个键
pyautogui.keyUp(key)

图像识别

PyAutoGUI提供了图像识别的功能,可以用于在屏幕上查找指定图像的位置。主要使用了locateOnScreen()locateCenterOnScreen()这两个函数

  • locateOnScreen():返回图像的位置

  • locateCenterOnScreen():返回中心坐标

如果没有匹配到,则返回 None

locateOnScreen() 函数有以下参数和作用:

  • image: 要查找的图像文件路径或PIL.Image.Image对象。它指定了要在屏幕上查找的目标图像。
  • grayscale (可选): 指定是否将图像转换为灰度图像进行匹配。默认值为False,表示使用彩色图像进行匹配。
  • confidence (可选): 匹配的置信度阈值。默认值为0.7,表示匹配的相似度必须大于等于该阈值才被认为是成功匹配。

代码示例:

import pyautogui

# 1. 准备待识别的图像
image_path = 'image.png'

# 2. 进行图像识别
location = pyautogui.locateOnScreen(image_path)
print(location)

# 3. 执行相应操作
if location:
    # 找到了图像,执行相应操作
    x, y, width, height = location
    # 在图像位置点击鼠标
    pyautogui.click(x, y)
else:
    # 没有找到图像,执行其他操作
    print("未找到待识别的图像")

异常处理

在使用 PyAutoGUI 进行 GUI 自动化操作时,可能会遇到一些异常情况。以下是一些常见问题的解决方案和最佳实践:

  • 问题:程序运行速度太慢。
    解决方案:可以调整 PyAutoGUI 的延迟时间和运行速度,以提高性能。

  • 问题:图像识别不准确。
    解决方案:可以尝试调整图像识别的参数或使用更准确的图像。

最佳实践和案例

一句话说完了,就是自动化!!!

  • 自动化测试:使用 PyAutoGUI 自动化执行测试用例,提高测试效率和准确性。
  • 批量处理:利用 PyAutoGUI 批量处理重复性任务,减轻工作负担。
  • 界面交互:与其他应用程序进行界面交互,自动执行特定操作。

总结🎈🎈

本文介绍了PyAutoGUI作为一个功能强大的自动化工具的基本概念和应用。我们了解了它可以模拟鼠标和键盘操作,执行各种自动化任务、GUI测试、屏幕操作和图像识别等功能。

PyAutoGUI的优势在于它的跨平台支持和简单直观的接口,使得编写自动化脚本变得容易。然而,在处理复杂的图形界面、特定应用程序或非标准控件的情况下,可能需要使用其他专门的工具或库来完成特定的自动化任务。

在使用PyAutoGUI时,我们应该注意设置适当的图像识别置信度阈值,以提高工作效率和准确性。并根据具体的项目需求选择合适的工具。

但需要注意的是,PyAutoGUI是基于屏幕坐标的自动化工具,它通过模拟鼠标和键盘操作来实现自动化。这意味着它在处理复杂的图形界面、特定的应用程序或涉及到非标准控件的情况下可能会遇到一些挑战。在这些情况下,您可能需要更专门的工具或库来完成特定的自动化任务。

后话

本次分享到此结束,

see you~🐱‍🏍🐱‍🏍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/624604.html

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

相关文章

手把手教你实现—基于OpenCV的车流量统计和车速检测代码

本章将实现了一个简单的车辆速度估计和车流量统计的GUI应用,它使用了Haar级联检测器和相关跟踪器来检测和跟踪视频中的车辆,并通过图像处理和数学计算来估计车辆的速度。 1.首先,该代码需要cv2:用于图像处理和计算机视觉任务&…

软件测试(功能、接口、性能、自动化)详解

一、软件测试功能测试测试用例编写是软件测试的基本技能;也有很多人认为测试用例是软件测试的核心;软件测试中最重要的是设计和生成有效的测试用例;测试用例是测试工作的指导,是软件测试的必须遵守的准则。黑盒测试常见测试用例编…

比较18个3*6尺寸差值结构的迭代次数

已发现二值化差值结构有3种相互作用,纵向,横向和斜向。纵向相互作用只与行间距有关而与数值的数量无关,与迭代次数成反比;横向相互作用只与列的数值数量有关与列间距无关,与迭代次数成正比;斜向相互作用将导…

完全免费PNG素材库,免费可商用~

推荐的这几个PNG素材网一定要收藏~免费可商用~ 菜鸟图库 https://www.sucai999.com/searchlist/66008----all-0-1.html?vNTYxMjky 菜鸟图库是一个为新手设计师提供免费素材的网站,站内有非常多设计相关素材,比如平面模板、UI素材、电商素材、免抠素材…

C++中string类的常用函数

文章目录 默认成员函数常见构造函数(constructor) string类的容量操作size()empty()capacity()reserve()clear()resize() string类对象的访问及遍历操作重载 [ ]begin()end()begin() end() 遍历字符串rbegin()rend()rbegin() rend()反向遍历字符串C11范围for string类对象修改…

客户至上 服务至极 ——优维服务流程标准化体系

◎ 如何用服务打动客户? 在思考这个问题之前,首先我们要了解做好服务最难的是什么? 众所周知,由机器作业出来的东西是一致且规范的,而服务不一样。服务,是需要人来参与的,当由不同的人来完成某…

web问题定位:F12,如何找到对应接口

接口查看法,是我们最常用的定位前后端问题的方法。即:一般用来查看是后端返回给前端的数据有误,还是前端显示有误。 主流浏览器(如Chrome,FireFox,等)都有自带的接口查看工具,可以通…

微软wsl2 + ubantu + docker + 部署本地项目

windows 操作系统版本要达到要求 开启 wsl2 安装实用工具 Windows Terminal 和 Visual Studio Code 安装 Ubuntu 子系统 安装 Docker Desktop 并让 Docker Desktop 基于 wsl2 来运行 基础环境准备可以完全参照《搭建 Laravel Sail 开发环境 - Windows》来进行,我跟教…

2023年的深度学习入门指南(16) - JAX和TPU加速

2023年的深度学习入门指南(16) - JAX和TPU加速 上一节我们介绍了ChatGPT的核心算法之一的人类指示的强化学习的原理。我知道大家都没看懂,因为需要的知识储备有点多。不过没关系,大模型也不是一天能够训练出来的,也不可能一天就对齐。我们有…

葡萄酒质量预测

本文中所有代码及数据均存放于:https://github.com/MADMAX110/WineQualityPrediction 本文根据酸度、残糖和酒精浓度等特征训练和调整一个随机的葡萄酒质量森林模型。 一、设置环境,确认你的电脑安装了以下环境 Python 3NumPyPandasScikit-Learn (a.k.a…

Ubuntu 18.04 交叉编译Opencv-4.6.0

环境 操作系统:Ubuntu 18.04 OpenCv版本:4.6.0 交叉工具链:arm-linux-gnueabihf-gcc-5.3.1 下载OpenCV源代码 这里推荐大家到网上找OpenCV的Linux版本安装包(.tar.gz结尾),不要github上clone&#xff08…

leetcode688. 骑士在棋盘上的概率(java)

骑士在棋盘上的概率 leetcode688. 骑士在棋盘上的概率题目描述 解题思路代码演示动态规划专题 leetcode688. 骑士在棋盘上的概率 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/knight-probability-in-chessboard 题目描…

【源码篇】基于ssm+vue+微信小程序的医疗科普小程序

系统介绍 这是一个ssmvue微信小程序的医疗科普小程序,分为pc端和微信小程序端 pc端包括:管理员角色和学生角色。 管理员拥有:学生管理、科普知识管理、论坛管理、收藏管理、试卷管理、留言板管理、试题管理、系统管理、考试管理 学生端拥…

AI实战营第二期 第五节 《目标检测与MMDetection》——笔记6

文章目录 摘要主要特性 常用概念框、边界框交并比 (loU)感受野有效感受野置信度 目标检测的基本思路难点滑框在特征图进行密集计算边界框回归基于锚框VS无锚框NMS(非极大值抑制)使周密集预测模型进行推理步骤如何训练密集预测模型的训练匹配的基本思路密…

C++ 教程(01)

C 教程 C 是一种高级语言,它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。C 进一步扩充和完善了 C 语言,是一种面向对象的程序设计语言。C 可运行于多种平台上,如 Windows、MAC 操作系统以及 UNIX 的各种版本。 本教程通过…

节省90%编译时间,这是字节跳动开源的基于Rust的前端构建工具

Rspack 是一个基于 Rust 的高性能构建引擎,它可以与 Webpack 生态系统交互,并提供更好的构建性能。 在处理具有复杂构建配置的巨石应用时,Rspack 可以提供 5~10 倍的编译性能提升。 字节跳动将 Rspack 开源后,它在 GitHub 上已有 …

Bert+FGSM/PGD实现中文文本分类(Loss=0.5L1+0.5L2)

任务目标:在使用FGSM/PGD来训练Bert模型进行文本分类,其实现原理可以简单概括为以下几个步骤: 对原始文本每个词转换为对应的嵌入向量。将每个嵌入向量与一个小的扰动向量相加,从而生成对抗样本。这个扰动向量的大小可以通过一个超…

2023年牛客网最新版大厂Java八股文面试题总结(覆盖所有面试题考点)

程序员真的是需要将终生学习贯彻到底的职业,一旦停止学习,离被淘汰,也就不远了。 金九银十跳槽季,这是一个千年不变的话题,每到这个时候,很多人都会临阵磨枪,相信不快也光。于是,大…

多业务线下,IT企业如何应对市场经济下行危机?

多业务线下,IT企业如何应对市场经济下行危机? 市场经济下行就像是一辆行驶的车子遇到了坡道,速度开始变慢甚至停下来。在这个情况下,经济的增长变得较为缓慢,消费减少,投资减少,也对企业会带来…

运筹说 第25期 | 对偶理论经典例题讲解

对偶理论是研究线性规划中原始问题与对偶问题之间关系的理论,主要研究经济学中的相互确定关系,涉及到经济学的诸多方面。产出与成本的对偶、效用与支出的对偶,是经济学中典型的对偶关系。 对偶理论中最有力的武器是影子价格,影子…