pyautogui — GUI 自动化工具,用于模拟键盘和鼠标事件。

PyAutoGUI — GUI 自动化工具,用于模拟键盘和鼠标事件

在日常工作中,很多重复性的操作可以通过自动化工具来完成,极大地提升效率。PyAutoGUI 是一个强大的 Python 库,它可以控制鼠标和键盘,模拟用户的交互行为,用于实现图形用户界面 (GUI) 自动化。


PyAutoGUI 简介

PyAutoGUI 是一个跨平台的 GUI 自动化工具,支持以下功能:

  • 模拟鼠标移动、点击、拖拽等操作。
  • 模拟键盘输入,包括按键和组合键。
  • 屏幕截图和图像识别。
  • 支持 Windows、macOS 和 Linux 系统。

安装 PyAutoGUI

使用 pip 安装 PyAutoGUI:

pip install pyautogui

检查安装是否成功:

python -c "import pyautogui; print(pyautogui.size())"

如果返回了当前屏幕的分辨率,说明安装成功。


基本功能

1. 获取屏幕大小

在执行鼠标移动或点击时,需要知道屏幕的分辨率:

import pyautogui

# 获取屏幕的宽度和高度
screen_width, screen_height = pyautogui.size()
print(f"屏幕分辨率: {screen_width}x{screen_height}")

2. 鼠标操作

(1) 获取鼠标位置
# 获取当前鼠标的坐标
x, y = pyautogui.position()
print(f"当前鼠标位置: ({x}, {y})")
(2) 移动鼠标
# 移动鼠标到屏幕中央
pyautogui.moveTo(960, 540, duration=1)  # (x, y) 坐标, 移动时长
(3) 模拟鼠标点击
# 单击
pyautogui.click(960, 540)  # (x, y) 坐标

# 双击
pyautogui.doubleClick()

# 右击
pyautogui.rightClick()
(4) 鼠标拖拽
# 从 (100, 100) 拖拽到 (400, 400)
pyautogui.moveTo(100, 100)
pyautogui.dragTo(400, 400, duration=1)
(5) 鼠标滚动
# 向上滚动
pyautogui.scroll(500)

# 向下滚动
pyautogui.scroll(-500)

3. 键盘操作

(1) 模拟输入文本
pyautogui.write("Hello, PyAutoGUI!", interval=0.1)  # 每个字符间隔 0.1 秒
(2) 模拟按键
# 按下并释放一个键
pyautogui.press("enter")

# 模拟组合键
pyautogui.hotkey("ctrl", "s")  # 模拟 Ctrl + S
(3) 模拟按住和释放
pyautogui.keyDown("shift")   # 按住 Shift 键
pyautogui.press("a")         # 输入 'A'
pyautogui.keyUp("shift")     # 释放 Shift 键

4. 屏幕截图与图像识别

(1) 屏幕截图
# 截取整个屏幕
screenshot = pyautogui.screenshot()
screenshot.save("screenshot.png")  # 保存截图
(2) 图像识别

通过图像识别找到屏幕上的目标位置:

# 在屏幕上查找名为 "button.png" 的图像
location = pyautogui.locateOnScreen("button.png")

if location:
    print(f"图像位置: {location}")
    pyautogui.click(location)  # 点击目标位置
else:
    print("未找到目标图像")

注意:图像识别依赖屏幕分辨率和图像匹配精度,可能需要调整。


高级功能

1. 自动化弹窗处理

# 模拟关闭弹窗
pyautogui.moveTo(1200, 10)  # 假设弹窗关闭按钮位于 (1200, 10)
pyautogui.click()

2. 安全触发

为了防止脚本失控,可以通过以下方法启用安全退出:

pyautogui.FAILSAFE = True  # 启用安全退出

当鼠标移动到屏幕左上角时,脚本会自动停止。


PyAutoGUI 的注意事项

  1. 屏幕分辨率一致性
    图像识别和鼠标操作需要确保运行环境的屏幕分辨率与开发环境一致,否则可能出现偏差。

  2. 适当的延迟
    在执行连续的操作时,建议加入适当的延迟,防止操作过快导致错误。

    pyautogui.PAUSE = 0.5  # 每次操作后暂停 0.5 秒
    
  3. 权限问题
    在 macOS 和某些 Linux 系统中,需要授予 PyAutoGUI 控制鼠标和键盘的权限。


应用场景

  1. 自动化测试
    模拟用户操作进行 GUI 测试,如点击按钮、输入表单等。

  2. 办公自动化
    自动化处理重复性任务,例如批量导入数据、生成报告。

  3. 游戏辅助
    模拟鼠标点击或键盘操作,实现简单的自动化游戏脚本。


示例项目:自动登录网站

以下示例演示如何使用 PyAutoGUI 自动登录一个网站:

import pyautogui
import time

# 打开浏览器
pyautogui.press("win")  # 按下 Windows 键
pyautogui.write("chrome")  # 输入浏览器名称
pyautogui.press("enter")
time.sleep(2)

# 输入网址
pyautogui.write("https://example.com/login")
pyautogui.press("enter")
time.sleep(3)

# 输入用户名和密码
pyautogui.click(600, 400)  # 点击用户名输入框
pyautogui.write("your_username")

pyautogui.click(600, 500)  # 点击密码输入框
pyautogui.write("your_password")

# 点击登录按钮
pyautogui.click(650, 600)

总结

PyAutoGUI 是一个功能丰富且易于使用的工具,非常适合实现 GUI 自动化任务。通过它,你可以快速模拟用户操作,完成一系列复杂的任务。如果你对 PyAutoGUI 感兴趣,不妨尝试将其应用到你的工作或项目中,相信它会成为你开发工具箱中不可或缺的一部分。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(计算机毕设)基于SpringBoot+Vue的房屋租赁系统的设计与实现

博主可接毕设设计!!! 各种毕业设计源码只要是你有的题目我这里都有源码 摘 要 社会的发展和科学技术的进步,互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。互…

[Admin] Dashboard Filter for Mix Report Types

Background RevOps team has built a dashboard for sales team to track team members’ performance, but they’re blocked by how to provide a manager view based on sales’ hierarchy. Therefore, they seek for dev team’s help to clear their blocker. From foll…

游戏引擎学习第19天

介绍 这段内容描述了开发者在进行游戏开发时,对于音频同步和平台层的理解和调整的过程。以下是更详细的复述: 开发者表达了他希望今天继续进行的工作内容。他提到,昨天他讲解了一些关于音频的内容,今天他想稍微深入讲解一下他正…

高阶云服务-ELB+AS

ELBAS 弹性负载均衡弹性伸缩 原来1台web服务器不满足相应,现部署多台提供相同服务; 由于多个服务器多个ip该如何提供给应用呢? 引申出负载均衡(HAProxy,LVS01四层,Nginx七层) 防单点故障做主备…

STM32设计防丢防摔智能行李箱-分享

目录 目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 1.电路图采用Altium Designer进行设计: 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着科技的不断发展,嵌入式系统、物联网技术、智能设备…

Mysql中REPLACE INTO详解及和INSERT INTO的区别

前言 我们在进行数据库操作的时候,经常会遇到这样的场景: 首先判断数据是否存在;如果不存在,则插入;如果存在,则更新。 博主之前是是Java来进行逻辑判断,例如: 看起来似乎也很简洁…

基于Java Springboot发艺美发店管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

element ui 走马灯一页展示多个数据实现

element ui 走马灯一页展示多个数据实现 element ui 走马灯一页展示多个数据实现 element ui 走马灯一页展示多个数据实现 主要是对走马灯的数据的操作,先看js处理 let list [{ i: 1, name: 1 },{ i: 2, name: 2 },{ i: 3, name: 3 },{ i: 4, name: 4 },]let newL…

ACM招新赛<赛后题解与反思总结>③

问题 A: 数数(Easy) 题目描述 某一天,工作室需要统计人数,现在小劉开始数人数,但是由于小劉数学极差,因此他数数的时候总是会忘记数数字8,也就是说他数完7以后,就会直接数数字9,直观的讲就是数字…

网络安全:我们的安全防线

在数字化时代,网络安全已成为国家安全、经济发展和社会稳定的重要组成部分。网络安全不仅仅是技术问题,更是一个涉及政治、经济、文化、社会等多个层面的综合性问题。从宏观到微观,网络安全的重要性不言而喻。 宏观层面:国家安全与…

八、鸿蒙开发-网络请求、应用级状态管理

提示:本文根据b站尚硅谷2024最新鸿蒙开发HarmonyOS4.0鸿蒙NEXT星河版零基础教程课整理 链接指引 > 尚硅谷2024最新鸿蒙开发HarmonyOS4.0鸿蒙NEXT星河版零基础教程 文章目录 一、网络请求1.1 申请网络访问权限1.2 安装axios库1.2.1 配置环境变量1.2.2 第二步&…

【MySQL实战45讲笔记】基础篇——MySQL 的基础架构

目录 1. MySQL 的基础架构1.1 连接器1.2 查询缓存1.3 分析器1.4 优化器1.5 执行器 1. MySQL 的基础架构 我们由一个问题引入对MySQL 基础架构的学习:一条SQL查询语句是如何执行的? mysql> select * from T where ID10;通过分析学习MySQL…

计算机网络 (5)数据通信的基础知识

前言 数据通信是一种以信息处理技术和计算机技术为基础的通信方式,它通过数据通信系统将数据以某种信号方式从一处传送到另一处,为计算机网络的应用和发展提供了技术支持和可靠的通信环境,是现代通信技术的关键部分。 一、数据通信的基本概念…

【操作系统笔记】目录

【操作系统笔记】操作系统框架https://blog.csdn.net/Resurgence03/article/details/142624262 【操作系统笔记】CPU管理https://blog.csdn.net/Resurgence03/article/details/142621526 【操作系统笔记】内存管理https://blog.csdn.net/Resurgence03/article/details/142669…

linux之调度管理(7)-SMP cpu 的spin-table启动

一、smp启动总体介绍 soc在启动阶段除了一些特殊情况外(如为了加快启动速度,在bl2阶段通过并行加载方式同时加载bl31、bl32和bl33镜像),一般都没有并行化需求。因此只需要一个cpu执行启动流程即可,这个cpu被称为primar…

基于Java Springboot活力健身馆管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

BERT-TFBS:一种基于 BERT 的新型模型,通过迁移学习预测转录因子结合位点

转录因子(TF)是通过结合 DNA 序列中的转录因子结合位点(TFBS)来调控基因转录所必需的蛋白质。准确预测 TFBS 有助于设计和构建基于 TF 的代谢调控系统。尽管已经开发了各种用于预测 TFBS 的深度学习算法,但预测性能仍有…

前端pdf预览方案

前端pdf预览方案 pdf预览一般不需要前端生成pdf文件,pdf文件一般是通过接口,获取pdf文件【responseType:‘blob’,】或二进制文件流【responseType: ‘arraybuffer’,】或者已有的pdf文件。 前端PDF预览通常是通过读取现有的PDF文件,并使用…

得物彩虹桥架构演进之路-负载均衡篇

文 / 新一 一、前言 一年一更的彩虹桥系列又来了,在前面两期我们分享了在稳定性和性能2个层面的一些演进&优化思路。近期我们针对彩虹桥 Proxy 负载均衡层面的架构做了一次升级,目前新架构已经部署完成,生产环境正在逐步升级中&#xf…

Python3.11.9+selenium,获取图片验证码以及输入验证码数字

Python3.11.9+selenium,获取图片验证码以及输入验证码数字 1、遇到问题:登录或修改密码需要验证码 2、解决办法: 2.1、安装ddddocr pip install ddddocr 2.2、解析验证码函数 import ddddocr def get_capcha_text():#获取验证码图片ele_pic = driver.find_element(By.XPAT…