Python 自动化详解(pyautogui)
文章目录
- 1 概述
- 1.1 第三方库:pyautogui
- 1.2 坐标说明
- 2 操作对象
- 2.1 鼠标
- 2.1.1 定位
- 2.1.2 移动
- 2.1.3 拖动
- 2.1.4 滚动
- 2.1.5 点击
- 2.2 键盘
- 2.2.1 输入
- 2.2.2 按键
- 2.2.3 快捷键
- 2.3 屏幕
- 2.3.1 截图
- 2.3.2 分辨率
- 2.4 信息提示
- 2.4.1 提示框
- 2.4.2 选择框
- 2.4.3 密码输入
- 2.4.4 普通输入
1 概述
1.1 第三方库:pyautogui
> pip install pyautogui
1.2 坐标说明

2 操作对象
2.1 鼠标
2.1.1 定位
import pyautogui# 鼠标定位:鼠标的 x,y 坐标
position = pyautogui.position()
print(f'x = {position.x}, y = {position.y}')
2.1.2 移动
import pyautogui# 移动鼠标:两种方式
# 常用属性:x=横坐标,y=纵坐标,duration=持续时间(默认 0)
pyautogui.moveTo(x=100, y=200, duration=1) # 方式1:移动至
pyautogui.moveRel(x=10, y=20) # 方式2:按方向移动 x: 正右负左、y:正上负下
2.1.3 拖动
import pyautogui# 移动拖动:两种方式
# 常用属性:x=横坐标,y=纵坐标,duration=持续时间(默认 0)
pyautogui.dragTo(x=100, y=200, duration=1) # 方式1:移动至
pyautogui.dragRel(xOffset=10, yOffset=20) # 方式2:按方向移动 x: 正右负左、y:正上负下
2.1.4 滚动
import pyautogui# 移动滚动
pyautogui.scroll(20)
2.1.5 点击
import pyautogui# 单击鼠标
pyautogui.click(10, 20) # 鼠标点击指定位置,默认左键
pyautogui.click(x=10, y=20, button='left') # 左键
pyautogui.click(x=10, y=20, button='right') # 右键
pyautogui.click(x=10, y=20, button='middle') # 中间# 双击鼠标
pyautogui.doubleClick(10, 10) # 左键
pyautogui.rightClick(10, 10) # 右键
pyautogui.middleClick(10, 10) # 中间# 点击 & 释放
pyautogui.mouseDown() # 鼠标按下
pyautogui.mouseUp() # 鼠标释放
2.2 键盘
2.2.1 输入
import pyautoguipyautogui.write('Hello World') # 立即输出
pyautogui.write('Hello World', interval=0.5) # 间隔0.5s输出
2.2.2 按键
import pyautoguipyautogui.keyDown('enter') # 按下指定键
pyautogui.keyUp('enter') # 松开指定键# 效果同上
pyautogui.press('enter') # 按一次指定键
注:暂不支持中文
| 键盘字符串 | 说明 |
|---|---|
| enter | 回车键 |
| tab | TAB 键 |
| space | 空格键 |
| up、down、left、right | 方向键 |
| ctrl | Ctrl 键 |
| … | … |
2.2.3 快捷键
pyautogui.hotkey('ctrl', 'a') # 选中
pyautogui.hotkey('ctrl', 'c') # 复制
pyautogui.hotkey('ctrl', 'v') # 粘贴pyautogui.hotkey('ctrl', 'alt', 'a')
2.3 屏幕
2.3.1 截图
import pyautoguiimg = pyautogui.screenshot()
img.save('屏幕截图.jpg')
2.3.2 分辨率
import pyautoguisize = pyautogui.size()
print(size) # Size(width=1366, height=768)# 坐标原点(0, 0), 坐标终点(width-1, height-1)
print(pyautogui.onScreen(1366, 768)) # False
print(pyautogui.onScreen(1365, 767)) # True
2.4 信息提示
2.4.1 提示框
import pyautoguitext = pyautogui.alert(text="这是一个提示框", title='提示')
print(text) # OK

2.4.2 选择框
import pyautoguitext = pyautogui.confirm('请选择一项', buttons=['选项 A', '选项 B', '选项 C'])
print(text) # buttons 中的取值

2.4.3 密码输入
import pyautoguitext = pyautogui.password('请输入密码:')
print(text)

2.4.4 普通输入
import pyautoguitext = pyautogui.prompt('请输入:')
print(text)

相关文章:
Python 自动化详解(pyautogui)
文章目录 1 概述1.1 第三方库:pyautogui1.2 坐标说明 2 操作对象2.1 鼠标2.1.1 定位2.1.2 移动2.1.3 拖动2.1.4 滚动2.1.5 点击 2.2 键盘2.2.1 输入2.2.2 按键2.2.3 快捷键 2.3 屏幕2.3.1 截图2.3.2 分辨率 2.4 信息提示2.4.1 提示框2.4.2 选择框2.4.3 密码输入2.4.…...
【Linux】第四站:Linux基本指令(三)
文章目录 一、时间相关的指令1.指令简介2.使用 二、cal指令三、find指令 -name1.介绍2.使用 四、grep指令1.介绍2.使用 五、zip/unzip指令1.介绍2.zip的安装3.使用 六、tar指令:打包解包,不打开它、直接看内容1.介绍2.使用 七、bc指令八、uname -r指令1.…...
SpringBoot内置工具类之断言Assert的使用与部分解析
先例举一个service的demo中用来验证参数对象的封装方法,使用了Assert工具类后是不是比普通的 if(xxx) { throw new RuntimeException(msg) } 看上去要简洁多了? 断言Assert工具类简介 断言是一个判断逻辑,用来检查不该发生的情况ÿ…...
如何检测租用的香港服务器是不是CN2线路呢?
CN2,是中国电信新一代融合承载网络,是为电信自身关键业务和具有QoS保证的SLA业务服务的,可以提供高性能的网络指 标,平均单向时延、最大单向时延、单向丢包率等均属于顶尖水平。简单地说,CN2和普通网络,就像…...
Spring Boot进阶(94):从入门到精通:Spring Boot和Prometheus监控系统的完美结合
📣前言 随着云原生技术的发展,监控和度量也成为了不可或缺的一部分。Prometheus 是一款最近比较流行的开源时间序列数据库,同时也是一种监控方案。它具有极其灵活的查询语言、自身的数据采集和存储机制以及易于集成的特点。而 Spring Boot 是…...
Redis(02)| 数据结构-SDS
一、键值对数据库是怎么实现的? 在开始讲数据结构之前,先给介绍下 Redis 是怎样实现键值对(key-value)数据库的。 Redis 的键值对中的 key 就是字符串对象,而 value 可以是字符串对象,也可以是集合数据类型…...
HackTheBox-Starting Point--Tier 0---Preignition
文章目录 一 题目二 实验过程 一 题目 Tags Web、Custom Applications、Apache、Reconnaissance、Web Site Structure Discovery、Default Credentials译文:Web、定制应用程序、Apache、侦察、网站结构发现、默认凭证Connect To attack the target machine, you …...
售货机相关的电路
一、货道选通矩阵电路,类似扫描电路,驱动哪个电机,就打开相应的行线与列线输出 二、MDB纸币器,虽然现在国内都是手机支付,但如果机器还是外销国外还是有用 三、硬币器电路,投币与退币,脉冲信号…...
软考高项(十四)项目沟通管理 ★重点集萃★
👑 个人主页 👑 :😜😜😜Fish_Vast😜😜😜 🐝 个人格言 🐝 :🧐🧐🧐说到做到,言出必行&am…...
Linux多线程服务端编程:使用muduo C++网络库 学习笔记 第五章 高效的多线程日志
“日志(logging)”有两个意思: 1.诊断日志(diagnostic log)。即log4j、logback、slf4j、glog、g2log、log4cxx、log4cpp、log4cplus、Pantheios、ezlogger等常用日志库提供的日志功能。 2.交易日志(trasac…...
利用Pholcus框架提取小红书数据的案例分析
前言 在当今互联网时代,数据的获取和分析变得越来越重要。爬虫技术作为一种数据采集的方法,被广泛涉及各个领域。在本文中,我们将介绍如何使用Python Spark语言和Pholcus框架来实现一本小红书数据爬虫的案例分析。 开发简述 Go语言作为一种…...
超详细Hadoop安装教程(单机版、伪分布式)
超详细Hadoop安装教程(单机版、伪分布式) 1.Hadoop分布式系统基础架构介绍1.1.Hadoop核心 2.Hadoop安装教程2.1.环境准备2.2.配置用户ssh 免密登录2.3.JAVA环境的安装和配置2.4.Hadoop安装2.5.单机版Hadoop配置2.6.伪分布式Hadoop配置2.7Hadoop初始化 1.…...
持续集成部署-k8s-服务发现-Ingress
持续集成部署-k8s-服务发现-Ingress 1. Ingress 是什么2. Ingress 控制器3. 安装 Ingress-Nginx3.1 添加 Helm 仓库3.2 更新 Helm 仓库3.3 下载 Ingress-Nginx 安装包3.4 配置 Ingress-Nginx 配置文件参数3.5 安装 Ingress-Nginx1. Ingress 是什么 Ingress是 Kubernetes 中的一…...
从零开始搭建Prometheus+grafana服务器组件监控系统
服务器及相关组件监控 本文档主要记录了常用企业级服务器及各种组件的监控手段和监控部署方案,使企业可以实时感知服务器组件的健康状态,并在服务器或组件出现异常时及时做出反应。 本方案采用的Prometheusgrafana的方式实现对服务器及各种组件的监控&am…...
智能水厂运行与调控3D模拟仿真在线展示提高整个系统的协同效应
水厂在生活中的重要性不可忽视。它们提供清洁、安全的水源,满足人们饮用、洗浴、烹饪等基本需求,保障公共卫生,预防疾病传播;同时,水厂也促进经济发展,为工业生产和农业灌溉提供保障,吸引和支持企业的投资和…...
ts声明文件
1 背景 对于为第三方模块/库写声明文件之前,我们需要知道第三方模块/库,是否需要声明文件,或者是否已有声明文件。 若第三方模块/库,是ts编写且无声明文件, 可以使用--declaration配置选项来生成;可以在命…...
JPA联合主键使用
在实际工作中,我们会经常遇到联合主键的情况,所以我用简单例子列举JPA两种实现联合主键的方式。 1、如何通过IdClass 实现联合主键 第一步:新建一个UserInfoID类,里面是联合主键 Data Builder NoArgsConstructor AllArgsConstructor publi…...
【计算机毕设经典案例】基于微信小程序的图书管理系统
前言:我是IT源码社,从事计算机开发行业数年,专注Java领域,专业提供程序设计开发、源码分享、技术指导讲解、定制和毕业设计服务 👉IT源码社-SpringBoot优质案例推荐👈 👉IT源码社-小程序优质案例…...
如何制作rpm离线安装包
如何制作rpm离线安装包 在内网环境中使用rpm安装zabbix-agent-6.4.6时,发现rpm无法下载依赖 1.准备一个可以连接外网的纯净centos7环境 防止本地已有的依赖不会被重复下载 docker pull centos:7docker stop mycentos7 docker rm mycentos72.启动centos7并挂载一…...
golang中快速用melody搭建轻量的websocket服务
在Go中,可以使用gin和melody库来搭建一个轻量级的WebSocket服务。gin是一个流行的Web框架,而melody是一个用于处理WebSocket的库。以下是一个简单的示例代码,演示了如何使用gin和melody搭建WebSocket服务: package mainimport (&…...
Node.js 服务如何无缝接入 Taotoken 并管理多个模型的 API 调用
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Node.js 服务如何无缝接入 Taotoken 并管理多个模型的 API 调用 在构建现代 Node.js 后端服务时,集成多种大语言模型能…...
OpenClaw用户指南通过Taotoken CLI快速写入配置并开始使用
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 OpenClaw用户指南:通过Taotoken CLI快速写入配置并开始使用 对于使用OpenClaw构建智能体工作流的开发者而言࿰…...
BooruDatasetTagManager:10倍提升AI训练数据标注效率的智能解决方案
BooruDatasetTagManager:10倍提升AI训练数据标注效率的智能解决方案 【免费下载链接】BooruDatasetTagManager 项目地址: https://gitcode.com/gh_mirrors/bo/BooruDatasetTagManager 面对数千张AI训练图像的繁琐标注工作,你是否感到力不从心&am…...
Unity中Newtonsoft.Json三种安装方式深度对比
1. 为什么Unity项目里装个Json库要纠结三天?——从一次崩溃说起Newtonsoft.Json,也就是大家常说的Json.NET,在C#生态里几乎是序列化的代名词。但放到Unity里,它却是个“熟悉的陌生人”:你写惯了JsonConvert.SerializeO…...
DouYinBot 抖音无水印视频解析工具:3分钟快速搭建个人解析服务
DouYinBot 抖音无水印视频解析工具:3分钟快速搭建个人解析服务 【免费下载链接】DouYinBot 该项目仅自用,不提供抖音视频下载 项目地址: https://gitcode.com/gh_mirrors/do/DouYinBot 在抖音内容创作日益普及的今天,如何快速获取无水…...
终极资源嗅探指南:猫抓浏览器扩展帮你轻松捕获网页媒体资源
终极资源嗅探指南:猫抓浏览器扩展帮你轻松捕获网页媒体资源 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在当今数字时代,…...
WeChatExporter:告别数据焦虑,轻松备份你的微信聊天记忆
WeChatExporter:告别数据焦虑,轻松备份你的微信聊天记忆 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 在数字时代,微信聊天记录承载…...
Flutter Provider状态管理完全指南
Flutter Provider状态管理完全指南 引言 Provider是Flutter生态中最流行的状态管理方案之一,它基于InheritedWidget实现,提供了简单、高效的状态管理方式。本文将深入探讨Provider的核心概念、使用方法和最佳实践。 一、Provider基础 1.1 添加依赖 depen…...
CANN-昇腾NPU-LoRA微调-显存只占5%怎么做到的
全量微调 Llama2-7B 需要更新 7B 参数,显存开销约 80GB。LoRA 只训练 0.5% 的参数(约 35M),显存开销约 4GB。在昇腾NPU上 LoRA 微调是性价比最高的方案。 LoRA 原理 在原始权重 W 旁边加一个低秩矩阵 ΔW A B: 原…...
从语义网到知识图谱:构建与神经符号融合实战指南
1. 从语义网到知识图谱:一场关于数据理解的革命如果你在2001年读到蒂姆伯纳斯-李那篇关于语义网的著名文章,可能会觉得那是一个遥远而宏大的梦想:让机器像人一样理解网页内容的含义,而不仅仅是展示文本。二十多年过去了࿰…...
