python实现GUI自动化(控制鼠标)|屏幕快照&图像识别基础
1.GUI自动化
●GUI自动化就是写程序直接控制键盘和鼠标。这些程序可以控制其他应用,向它们发送虚拟的击键和鼠标点击,就像你自己坐在计算机前与应用交互-样。这种技术被称为“图形用户界面自动化”,或简称为“GUI自动化"。有了GUI自动化,你的程序就像-个活人用户坐在计算机前一样,能做任何事情,除了将咖啡泼在键盘上。
●也可以将GUI自动化看成是对一个机械臂编程。你可以对机械臂编程,让它敲键盘或移动鼠标。对于涉及许多无脑点击或填表的任务,这种技术特别有用。
pip install pyautogui
1.1 鼠标移动操作
pyautogui坐标的处理
- pyautogui的鼠标函数使用X、y坐标。原点的x、y都是零,在屏幕的左上角。向右X坐标增加,向下y坐标增加。所有坐标都是正整数,没有负数坐标。

●分辨率
- 分辨率是屏幕的宽和高有多少像素。如果屏幕的分辨率设置为1920 x 1080, 那么左上角的坐标是(0, 0),右下角的坐标是(1919, 1079) 。
●编程获取电脑屏幕的宽和高的像素数
- pyautoguisize0 函数返回两个整数的元组,包含屏幕的宽和高的像素数
import pyautogui
width, height=pyautogui.size( )
print(width, height)
1920 1080
●移动鼠标
- pyautogui.moveTo0函数将鼠标立即移动到屏幕的指定位置。
- 表示x、y坐标的整数值分别构成了函数的第一个和第二个参数。
- 可选的duration整数或浮点数关键字参数,指定了将鼠标移到目的位置所需的秒数。如果不指定,默认值是零,表示立即移动(在 PyAutoGUI函数中,所有的duration 关键字参数都是可选的)。
import pyautogui
for i in range(5):
pyautogui.moveTo(100,100, duration=0.25)
pyautogui.moveTo(200,100, duration=0.25)
pyautogui.moveTo(200,200, duration=0.25)
pyautogui.moveTo(100,200,duration=0.25)
#在屏幕左上角画矩形
●pyautogul.moveRel0 函数相对于当前的位置移动鼠标
- 该函数可以接受3个参数:向右水平移动多少个像素,向下垂直移动多少个像素,以及(可选的) 花多少时间完成移动。为第一第二个参数提供负整数,鼠标将向左或向上移动。
import pyautogui
for i in range(5):
pyautogui.moveRel(100,0,duration=0.25 )
pyautogui.moveRel(0,100, duration=0.25)
pyautogui.moveRe1(-100,0,duration=0.25)
pyautogui.moveRel(0,-100, duration=0.25)
●获取鼠标位置
- 通过调用pyautogui.position()函数,可以确定鼠标当前的位置。它将返回函数调用时,鼠标x、y坐标的元组。
pyautogui.position()
1.2 鼠标点击操作
●鼠标点击
- 要向计算机发送虚拟的鼠标点击,就调用pyautogui.click0 方法。默认情况下,点击将使用鼠标左键,点击发生在鼠标当前所在位置。如果希望点击在鼠标当前位置以外的地方发生,可以传入X、y坐标作为可选的第- -第二参 数。

●指定鼠标按键
- 如果想指定鼠标按键,就加入button关键字参数,值分别为left'、 'middle'或 'right'。例如,pyautogui.click (100,150,button='left') 将在坐标(100, 150) 处点击鼠标左键。而pyautogui.click (200, 250, button='right') 将在坐标(200, 250)处点击右键。

实现点击的其他方法
■pyautogui. mouseDown(
- 只是按下鼠标按键
pyautogui.mouseUp0
- 只是释放鼠标按键
■pyautogui.doubleClick0
- 执行双击鼠标左键
■pyautogui.rightClick0, pyautogui.middleClick0
- 分别执行双击右键和双击中键
1.3 鼠标拖动操作

import pyautogui, time
time.sleep(2) #给个延迟
pyautogui.click()
distance = 200
while distance > 0:
pyautogui.dragRel (distance, 0,duration=0.2, button='left') # move right
distance = distance - 5
pyautogui.dragRel(0, distance, duration=0.2 , button='left') # move down
pyautogui.dragRel ( -distance, 0,duration=0.2,button='left') # move left
distance = distance - 5
pyautogui.dragRel(0, -distance, duration=0 .2, button='left') # move up

画矩形:

1.4 鼠标滚动操作
滚动鼠标
- 最后一个pyautogui鼠标函数是scroll)。 你向它提供一个整型参 数,说明向上或向下滚动多少单位,滚动发生在鼠标的当前位置。
- 单位的意义在每个操作系统和应用上不一样,所以你必须试验,看看在你的情况下滚动多远。
- 传递正整数表示向上滚动,传递负整数表示向下滚动
import pyautogui, time
time. sleep(2)
pyautogui.scroll(B00)
2.屏幕快照&图像识别基础
2.1 屏幕快照
你的GUI自动化程序没有必要盲目地点击和输入。pyautogui 拥有屏幕快照的功能,可以根据当前屏幕的内容创建图形文件。
●注意:
- 在Linux计算机上,需要安装scrot程序,才能在pyautogui中使用屏幕快照功能。在终端窗口中,执行sudo apt-get install scrot,安装该程序。如果你使用Windows或OS X,就跳过这一步获取屏幕快照【全局截图】
- 要在Python中获取屏幕快照,就调用pyautogui.screenshot0函数,函数将返回包含一个屏幕快照的Image对象
import pyautogui
im = pyautogui.screenshot()
im.save('./ 123.png' )

import pyautogui
im.getpixel((23,56))
#获取屏幕的RGB+透明度

import pyautogui
im = pyautogui . screenshot( )
print(im.getpixe1((500,200)))
result = pyautogui.pixelMatchesColor(500, 200, (248,248, 248) )
print(result)
2.2 图像识别基础
opencv:
python实现GUI自动化(控制鼠标)|屏幕快照&图像识别基础的更多相关文章
- 安利下PyAUtoGUI这个库,可自动化控制鼠标键盘
PyAutoGUI 不知道你有没有用过,它是一款用Python自动化控制键盘.鼠标的库.但凡是你不想手动重复操作的工作都可以用这个库来解决. 比如,我想半夜时候定时给发个微信,或者每天自动刷页面等操作 ...
- Python使用pyautogui控制鼠标键盘
官方文档:https://pyautogui.readthedocs.io/en/latest/# 安装pyautogui模块 在 Windows 上,不需要安装其他模块. 在 OS X 上,运行 s ...
- Python 编程快速上手 第十八章 用 GUI 自动化控制键盘和鼠标
前言 这一章节讲述了如何实现 GUI 自动化,首先讲了一些处理异常状况的方法,然后是关于 GUI 自动化的内容,主要有三个部分: 控制鼠标 图像识别 控制键盘 下面引用一段话: 请将 GUI 自动化看 ...
- python自动化之鼠标移动
################################用GUI自动化控制键盘和鼠标############################### ''' http://pyautogui.r ...
- 使用Python进行GUI操作自动化
前言 本文介绍怎样使用Python进行跨平台的GUI操作的,其中使用的一个工具包是pyautogui,PyAutoGUI可以模拟鼠标的移动.点击.拖拽,键盘按键输入.按住操作,以及鼠标+键盘的热键同时 ...
- Python直接控制鼠标键盘
Python直接控制鼠标键盘 之前因为期末的原因已经很久没写博客了,今天博主发现一个好玩的模块PyAutoGUI,借助它可以使用Python脚本直接控制键盘鼠标,感觉可以解决很多无聊的机械运动.这里记 ...
- python如何直接控制鼠标键盘
一.简介 我们知道在windows下输入:win + r,会弹出下面的窗口,而在下面的窗口出现后我们接着按下esc键,下面的窗口会消失 现在设想我们想在python代码里控制键盘,想通过运行代码-&g ...
- java通过控制鼠标实现屏幕广播
在java实现屏幕共享的小程序中提到截取屏幕时是没鼠标,为了看到教师端界面上的鼠标,可以在截取屏幕的时候,把鼠标绘制到每一张截图上去,但是由于截图的时候是一张张截取的,所以看到的鼠标难免会有点卡,之前 ...
- Python+Selenium自动化 模拟鼠标操作
Python+Selenium自动化 模拟鼠标操作 在webdriver中,鼠标的一些操作如:双击.右击.悬停.拖动等都被封装在ActionChains类中,我们只用在需要使用的时候,导入这个类就 ...
- Python——控制鼠标键盘
一.安装包 pip install pynput 二.引用包 from pynput import mouse,keyboard 三.控制鼠标 from pynput.mouse import But ...
随机推荐
- Mycat 学习笔记
概述 1. Mycat 是什么? Mycat 是数据库中间件,连接 Java 应用程序和数据库,它的作用如下: 读写分离 数据分片:垂直拆分(分库).水平拆分(分表).垂直+水平拆分(分库分表) 多数 ...
- 【原理篇】WebView 实现嵌套滑动,丝滑般实现吸顶效果,完美兼容 X5 webview
本文首发我的微信公众号徐公,收录于 Github·AndroidGuide,这里有 Android 进阶成长知识体系, 希望我们能够一起学习进步,关注公众号徐公,5 年中大厂程序员,一起建立核心竞争力 ...
- 51 nod | 1007 正整数分组(背包DP)
补题链接:Here 将一堆正整数分为2组,要求2组的和相差最小. 例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的. 输入 第1行:一个数N,N为正 ...
- Kafka 原理以及分区分配策略剖析
一.简介 Apache Kafka 是一个分布式的流处理平台(分布式的基于发布/订阅模式的消息队列[Message Queue]). 流处理平台有以下3个特性: 可以让你发布和订阅流式的记录.这一方面 ...
- <vue初体验> 基础知识 3、vue的计数器
系列导航 <vue初体验> 一. vue的引入和使用体验 <vue初体验> 二. vue的列表展示 <vue初体验> 三. vue的计数器 <vue初体验&g ...
- 从0开发3D引擎(十三):使用领域驱动设计,从最小3D程序中提炼引擎(第四部分)
目录 上一篇博文 下一篇博文 本文流程 回顾上文 解释基本的操作 如何在浏览器上运行index.html 开始实现 准备 建立代码的文件夹结构,约定模块文件的命名规则 模块文件的命名原则 一级和二级文 ...
- CLion创建自定义代码模板
1.问题 很多时候我们都想要简化代码编写,比如像IDEA那样,写入一个sout即会补全为System.out.println( |inserts cursor here| );的形式 最急切的例子便是 ...
- MySQL本地服务器与MySQL57网络服务器区别
MySQL服务器与MySQL57服务器区别与不同处在哪里,他们各自的领域范围,能不能同时启动服务? 安装了MySQL-5.7.18.0版本数据库,版本中包含了MySQL Workbench可视化试图工 ...
- 部署开源项目管理工具focalboard
前言 focalboard是一款开源项目管理工具,类似Jira.Trello.官网地址 组件 版本 说明 Debian 12.1 操作系统 docker 20.10.7 容器运行时 docker-co ...
- 【Tomcat 组成与工作原理】
Tomcat组成与工作原理 Tomcat 是什么 开源的 Java Web 应用服务器,实现了 Java EE(Java Platform Enterprise Edition)的部 分技术规范,比如 ...