PyAutoGUI图形用户界面自动化的超详细教程

目录
  • 开始之前
  • 查看屏幕大小
  • 获取当前鼠标的位置
  • 检查指定坐标是否在屏幕上
  • 设置暂停时间
  • 鼠标功能
    • 移动鼠标
    • 鼠标点击
    • 鼠标拖动
    • 鼠标滚动
  • 屏幕功能
    • 截屏功能
    • 定位功能
  • 消息框功能
    • alert()函数
    • confirm()函数
    • prompt()函数
    • password()函数
  • 键盘控制功能
    • write()函数
    • press()函数
    • hotkey()函数
  • 总结

开始之前

在开始之前,要先安装所需要的模块 pyautogui, pyautogui 模块可以向 Windows 发送虚拟按键和鼠标点击。

pip install -i https://pypi.douban.com/simple pyautogui

查看屏幕大小

pyautogui.size() 可以获得屏幕的宽和高的像素数(整数)。

>>> pyautogui.size()
Size(width=1920, height=1080)
# 也可以直接将宽,高进行保存 x, y = pyautogui.size()

获取当前鼠标的位置

函数返回当前位置 X,Y 坐标的元组,如果设置 x,y 的参数,则会覆盖返回结果。

>>> pyautogui.position(x=None, y=None)
Point(x=1437, y=817)

检查指定坐标是否在屏幕上

要检查 X,Y 坐标是否在屏幕上,将它们(支持两个整数,列表,元组)传递给 onScreen() 函数,如果它们在屏幕的边界内,则返回 True ,否则返回 False 。

>>> pyautogui.size()
(1920, 1080)
>>> pyautogui.onScreen(1920, 1080)
False
>>> pyautogui.onScreen(1919, 1079)
True

设置暂停时间

使用 pyautogui.PAUSE 变量设置要暂 停的秒数。如,在设置 pyautogui.PAUSE = 1 之后,每个 PyAutoGUI 函数调用 在执行动作之后,都会等待一秒。

>>> pyautogui.PAUSE = 1

鼠标功能

移动鼠标

移动鼠标到指定位置。

pyautogui.moveTo(x=None, y=None, duration=0.0) # 移动鼠标到指定位置
pyautogui.move(xOffset=None, yOffset=None, duration=0.0) # 在PyAutoGUI 1.0,move 替换了 moveRel,但moveRel也可以使用

pyautogui.moveTo(200, 300, duration=0.5)   # 移动到坐标(200,300)
pyautogui.move(200, 300, duration=0.5)     # 从当前鼠标位置向右移动 200 向下移动 300

主要参数参数:

x/xOffset:X轴坐标,moveTo() 中取值0或正整数值,move()/moveRel() 中取值可以为负数,代表以当前位置向左移动

y/yOffset:Y轴坐标,moveTo() 中取值0或正整数值,move()/moveRel() 中取值可以为负数,代表以当前位置向上移动

duration:移动到指定坐标花费的时间,默认为0,代表立即完成,单位为s

鼠标点击

使用 click() 完成鼠标点击操作。

>>> pyautogui.click(x=None, y=None, clicks=1, interval=0.0, button=PRIMARY, duration=0.0)

主要参数:

x:X轴坐标,默认为 None,即当前X轴坐标

y:Y轴坐标,默认为 None,即当前Y轴坐标(注:X,Y 轴的坐标只能同时指定,不能只指定某一个)

clicks:鼠标的点击次数,默认为 1 次

interval:int 或浮点数,表示每次单击之间需要等待多少秒,默认值为0.0,表示单击之间没有暂停

button:可选 LEFT、MIDDLE、RIGHT、PRIMARY(左键)或 SECONDARY(右键)。它的默认值是 PRIMARY

duration:如果指定了 X,Y 的值,并且该坐标不是鼠标当前位置的话,那么 duration 参数就可以生效,它表示移动到指定坐标花费的时间,默认为 0,表示立即移动。

其他点击操作:

pyautogui.mouseDown()    # 按下鼠标按键(左键)
pyautogui.mouseUp()      # 释放鼠标按键(左键)

鼠标拖动

按住鼠标的某个键进行拖动。

pyautogui.dragTo(x=None, y=None, duration=0.0, button=PRIMARY)     # 将鼠标拖动到指定位置  

pyautogui.drag(xOffset=0, yOffset=0, duration=0.0, button=PRIMARY)    # 将鼠标拖动到屏幕上相对于当前位置的一个点。

主要参数:

x,y/xOffset,yOffset:x 和 y 指明鼠标事件发生的位置。如果为 None,则使用鼠标当前位置。如果是浮点值,则将其舍入。如果在屏幕边界之外,则事件发生在屏幕边缘。

duration:如果指定了 X,Y 的值,并且该坐标不是鼠标当前位置的话,那么 duration 参数就可以生效,它表示移动到指定坐标花费的时间,默认为 0,表示立即移动。

button:可选 LEFT、MIDDLE、RIGHT、PRIMARY(左键)或 SECONDARY(右键)。它的默认值是 PRIMARY

️示例:

鼠标滚动

垂直滚动,在不同平台滚动的效果可能不一样。

>>> pyautogui.scroll(100)   # 向上滚动100
>>> pyautogui.scroll(-100)  # 向下滚动100
>>> pyautogui.scroll(100, x=200, y=200)  # 移动到200, 然后执行滚动

水平滚动,(适用与 OS X 和 Linux 平台上)。

>>> pyautogui.hscroll(100)   # 向右滚动100
>>> pyautogui.hscroll(-100)   # 向左滚动100

️示例:

屏幕功能

截屏功能

使用 screenshot() 函数来实现截屏功能。调用 screenshot() 将返回一个 Image 对象。传入一个文件名字符串将把截图保存到文件中,并将其作为一个 Image 对象返回。通过 region 关键字参数来捕获指定区域,只需传递一个由 left, top, width, height 组成的元组(left,top为左上角坐标)。

>>> import pyautogui
>>> pyautogui.screenshot()
>>> pyautogui.screenshot(r'C:\Users\pc\Desktop\test.png')
>>> pyautogui.screenshot(r'C:\Users\pc\Desktop\test.png', region=(300, 300, 500, 1000))

定位功能

如果不知道要点击的内容在屏幕上的确切坐标,就不能调用 moveTo()click() 函数。但是,如果有按钮的图像,如下面这个图片,那就可以调用 locateOnScreen('图片路径') 函数来获取坐标。返回值是一个元组:(left, top, width, height)。这个元组可以传递给 center() 来获得该区域中心的坐标(X,Y)。如果在屏幕上找不到图像,locateOnScreen() 将引发 ImageNotFoundException 异常。

>>> location = pyautogui.locateOnScreen('图片路径')
>>> pyautogui.center(location)

还可以将 grayscale=True 传递给 locateOnScreen,以略微加速(大约 30%)。这降低了图像和截图的颜色饱和度,加快了定位速度,但可能会导致错误匹配。

消息框功能

PyAutoGUI 利用 PyMsgBox 中的消息框函数提供了一种跨平台的纯 Python 方法来显示 javascript 样式的消息框。

alert()函数

>>> pyautogui.alert(text='text', title='title', button='alert!')
'alert!'

显示一个带有文本的简单消息框和一个 alert! 按钮。单击按钮后返回 button 的值。

️示例:

confirm()函数

显示带有多个按钮的消息框。按钮的数量和文字可以自己设置。单击按钮返回该按钮的文本。

>>> pyautogui.confirm(text='text', title='title', buttons=['再考虑一下', '卸载'])
'卸载'

️示例:

prompt()函数

显示一个包含 确认,取消 按钮和文本输入栏的消息框,用户可以输入指定内容。当点击确认按钮后,返回输入框中的值;若点击取消,则返回 None 。

pyautogui.prompt(text='text', title='title', default='请输入文本信息')

️示例:

password()函数

显示一个包含 确认,取消 按钮和文本输入栏的消息框,输入的字符显示为"*"。如果点击确认则返回输入的文本;如果单击“取消”,则为 None

pyautogui.password(text='text', title='title', default='密码', mask='*')

️示例:

键盘控制功能

write()函数

write() 函数将在传入的字符串中键入字符。若要在按下每个字符键之间添加延迟间隔,interval 参数可以设置每个按键之间添加延迟。

>>> pyautogui.write('Hello world!', interval=0.25) # 每个字符间隔0.25秒

注意:pyautogui 并不支持输入框自动聚焦,所有输入之前先要点击输入框位置。

press()函数

press() 函数执行的操作相当于鼠标操作的 click(),它接收传递给它的字符串。

press('num0', presses=1, interval=0.0)
  • keys:传入的键盘字符串
  • presses:操作按键次数,默认一次
  • interval:每次按键的间隔时间,默认0

keys 所有取值如下:

['\t', '\n', '\r', ' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+',
',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';'
, '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd',
'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't'
, 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', 'accept', 'add', 'alt',
'altleft', 'altright', 'apps', 'backspace', 'browserback', 'browserfavorites',
'browserforward', 'browserhome', 'browserrefresh', 'browsersearch','browserstop'
,'capslock', 'clear', 'convert', 'ctrl', 'ctrlleft','ctrlright', 'decimal',
'del', 'delete', 'divide', 'down', 'end', 'enter', 'esc', 'escape', 'execute',
'f1', 'f10', 'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2'
, 'f20', 'f21', 'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9'
, 'final', 'fn', 'hanguel', 'hangul','hanja', 'help', 'home', 'insert', 'junja'
, 'kana', 'kanji', 'launchapp1', 'launchapp2', 'launchmail', 'launchmediaselect'
, 'left', 'modechange', 'multiply', 'nexttrack', 'nonconvert'
, 'num0', 'num1', 'num2', 'num3', 'num4', 'num5', 'num6', 'num7'
, 'num8', 'num9', 'numlock', 'pagedown', 'pageup', 'pause', 'pgdn', 'pgup'
, 'playpause', 'prevtrack', 'print', 'printscreen', 'prntscrn', 'prtsc'
, 'prtscr', 'return', 'right', 'scrolllock', 'select', 'separator', 'shift'
, 'shiftleft', 'shiftright', 'sleep', 'space', 'stop', 'subtract', 'tab', 'up'
, 'volumedown', 'volumemute', 'volumeup', 'win', 'winleft', 'winright', 'yen'
, 'command', 'option', 'optionleft', 'optionright']

hotkey()函数

接收多个字符串参数,顺序按下,再按相反的顺序释放。

pyautogui.hotkey('ctrl', 'shift', 'esc')

相当于
pyautogui.keyDown('ctrl')    # 按下 ctrl
pyautogui.keyDown('shift')    # 按下 shift
pyautogui.keyDown('esc')    # 按下 esc
pyautogui.keyUp('esc')    # 释放 ctrl
pyautogui.keyUp('shift')    # 释放 shift
pyautogui.keyUp('ctrl') # 释放 esc

️示例:

总结

到此这篇关于PyAutoGUI图形用户界面自动化的文章就介绍到这了,更多相关PyAutoGUI图形用户界面自动化内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python键鼠操作自动化库PyAutoGUI简介(小结)

    PyAutoGUI是一个Python语言的键鼠自动化库,简单来说和按键精灵的功能一样.但是因为是Python的类库,所以可以使用Python代码配合一些其他类库完成更加强大的功能.下面让我为大家介绍一下吧. 安装 从pip安装即可. pip install pyautogui 稍等一下安装就完毕了. 使用介绍 简单介绍一下PyAutoGUI的函数以及使用方法. 鼠标操作函数 操作鼠标点击的函数. 函数 简单说明 move(x,y). moveTo(x,y) 移动鼠标,前者移动相对位置,后者移动到

  • Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解

    本文实例讲述了Python PyAutoGUI模块控制鼠标和键盘实现自动化任务.分享给大家供大家参考,具体如下: PyAutoGUI是用Python写的一个模块,使用它可以控制鼠标和键盘. 利用它可以实现自动化任务,再也不用担心有重复枯燥的任务了. pyautogui模块的功能: 移动鼠标.点击左右键和滚轮 发送虚拟按键 # 安装pyautogui 这个模块支持Windows, Mac OS X 和 Linux. 根据系统不同,你可能需要安装一些依赖. Linux系统(Debian系列): $

  • Python使用pyautogui模块实现自动化鼠标和键盘操作示例

    本文实例讲述了Python使用pyautogui模块实现自动化鼠标和键盘操作.分享给大家供大家参考,具体如下: 一.pyautogui模块简要说明 ## 使用 pyautogui 模块相关函数,可以模拟鼠标及键盘操作, 完整说明文档见: http://pyautogui.readthedocs.org/ # pip install pyautogui # 要注意的是,模拟移动鼠标与击键可能太快,导致其他程序跟不上,并且程序可能失去控制, # 需要掌握如何从问题中恢复,至少要能中止它. # 防止或

  • python教程之利用pyautogui图形自动化击败重复性办公任务

    pyautogui一个神奇的图像自动化库,学会之后无所不能.上能挂机刷宝箱,下能自动写文档.(>人<:)让我装个逼,别锤我,谢谢! 安装 这个pyautogui在win10上的安装挺坑的,当初第一次安装时出现了好几次错误(┬┬﹏┬┬)安装命令如下: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyautogui 导入模块 在安装好这个模块后我们还需要在程序的开头加上如下代码导入该模块 import pyautogui 鼠标操作

  • python PyAUtoGUI库实现自动化控制鼠标键盘

    PyAutoGUI 不知道你有没有用过,它是一款用Python自动化控制键盘.鼠标的库.但凡是你不想手动重复操作的工作都可以用这个库来解决. 比如,我想半夜时候定时给发个微信,或者每天自动刷页面等操作,它能完全模拟手动操作,而你可以安心的刷剧了. 嗯,懒惰是程序员的美德. 安装pyautogui pip install pyautogui 键盘鼠标控制 >>> import pyautogui >>> screenWidth, screenHeight = pyauto

  • pyautogui自动化控制鼠标和键盘操作的步骤

    PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作,多平台支持(Windows,OS X,Linux). 安装 pip3 install pyautogui pyautogui鼠标操作样例 import pyautogui # 获取当前屏幕分辨率 screenWidth, screenHeight = pyautogui.size() # 获取当前鼠标位置 currentMouseX, currentMouseY = pyautogui.posit

  • Python pyautogui模块实现鼠标键盘自动化方法详解

    本文简单介绍如何使用 Python 的 pyautogui 模块实现鼠标的自动移动以及键盘的自行输入. 该模块不是 Python 自带的, 因此执行以下命令进行安装 # pyautogui模块依赖image模块,没有image会报ImportError: No module named 'PIL'错误 pip install image pip install pyautogui 官方文档介绍:https://pyautogui.readthedocs.io/en/latest/ 使用 pyau

  • python 利用PyAutoGUI快速构建自动化操作脚本

    一.背景 大家好,我是安果! 我们经常遇到需要进行大量重复操作的时候,比如:网页上填表,对 web 版本 OA 进行操作,自动化测试或者给新系统首次添加数据等 这些操作的特点往往是:数据同构,大多是已经有了的结构化数据:操作比较呆板,都是同一个流程的点击.输入:数据量大,极大消耗操作人精力 那么能不能自动化呢? 二.自动化的方案 如果你在 web 上进行操作, Python 的 Selenium 可以满足要求.如果需要对 GUI 界面进行操作,你恐怕得试验下"按键精灵"能不能满足要求.

  • PyAutoGUI图形用户界面自动化的超详细教程

    目录 开始之前 查看屏幕大小 获取当前鼠标的位置 检查指定坐标是否在屏幕上 设置暂停时间 鼠标功能 移动鼠标 鼠标点击 鼠标拖动 鼠标滚动 屏幕功能 截屏功能 定位功能 消息框功能 alert()函数 confirm()函数 prompt()函数 password()函数 键盘控制功能 write()函数 press()函数 hotkey()函数 总结 开始之前 在开始之前,要先安装所需要的模块 pyautogui, pyautogui 模块可以向 Windows 发送虚拟按键和鼠标点击. pi

  • Python matplotlib超详细教程实现图形绘制

    目录 前言 1. matplotlib.patches概述 2. 绘制图形方法 3. 绘制图形步骤 4. 绘制图形属性 设置透明度 设置颜色 5. 小试牛刀 前言 我们前面对matplotlib模块底层结构学习,对其pyplot类(脚本层)类提供的绘制折线图.柱状图.饼图.直方图等统计图表的相关方法,列举往期文章如下. Python利用 matplotlib 绘制直方图 Python用 matplotlib 绘制柱状图 python 用matplotlib绘制折线图详情 Python利用matp

  • python中spy++的使用超详细教程

    1.spy++的基本操作 我们下载spy++: Microsoft Spy++ V15.0.26724.1 简体中文绿色版 64位 1.1 窗口属性查找 拖住中间的"寻找工具"放到想要定位的软件上,然后松开 以微信为例,我们会得到"微信"这个窗口的句柄,为"00031510",注意这个句柄是"十六进制",即"0x31510". 点击ok我们会看到更详细的属性信息 1.2 窗口spy++定位 同理拖放到&qu

  • python UIAutomator2使用超详细教程

    一.环境要求 python 3.6+ android 4.4+ 二.介绍 uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库.其底层基于Google uiautomator,Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作. 三.库地址 GitHub地址: https://github.com/openatx/uiautomator2 https://github.com/openatx/uiau

  • Security安装 Elastic SIEM 和 EDR的超详细教程

    Elastic Security 为分析人员提供了预防,检测和响应威胁的手段. 该解决方案解决了SIEM,endpoint,威胁搜寻等安全用例,使 SecOps 团队能够收集各种数据,执行自动化和分析师驱动的分析,并通过嵌入式工作流和自动化来应对安全威胁.在今天的文章中,我将介绍如何安装 Elastic SIEM 及 EDR. 在我的系统配置中,我们使用如下的结构: 我有两台机器,在其中的一台机器上安装有 Elasticsearch,Filebeat 及 Kibana,而在另外一台机器上安装有

  • 使用Docker+jenkins+python3环境搭建超详细教程

    前言: 自动化写好后需要在服务器上每日定时运行遇到,这样的一个问题,Jenkins容器是在docker中安装的 ,然后从git上拉取代码 发现代码在jenkins容器的目录当中,运行的时候提示没有安装python环境还第三方库. 解决方法有3种: 第一种:启动jenkins容器时 将容器的目录挂载到宿主机目录上去执行(方法不能实现)Pass 第二种:在jenkins上创建本地节点,将代码拉取到本地 然后去运行本地项目(在本机上使用比较方便,但是局限性比较小) 第三种:重新封装jenkins镜像,

  • BootstrapValidator超详细教程(推荐)

    一.引入必要文件 下载地址:(https://github.com/nghuuphuoc/bootstrapvalidator/archive/v0.4.5.zip) <link rel="stylesheet" href="/path/to/bootstrap/css/bootstrap.css"/> <link rel="stylesheet" href="/path/to/dist/css/bootstrapVa

  • Springboot启动扩展点超详细教程小结

    1.背景 Spring的核心思想就是容器,当容器refresh的时候,外部看上去风平浪静,其实内部则是一片惊涛骇浪,汪洋一片.Springboot更是封装了Spring,遵循约定大于配置,加上自动装配的机制.很多时候我们只要引用了一个依赖,几乎是零配置就能完成一个功能的装配. 我非常喜欢这种自动装配的机制,所以在自己开发中间件和公共依赖工具的时候也会用到这个特性.让使用者以最小的代价接入.想要把自动装配玩的转,就必须要了解spring对于bean的构造生命周期以及各个扩展接口.当然了解了bean

  • 搭建PhpStorm+PhpStudy开发环境的超详细教程

    刚开始接触PHP开发,搭建开发环境是第一步,网上下载PhpStorm和PhpStudy软件,怎样安装和激活就不详细说了,我们重点来看一看怎样搭配这两个开发环境. 前提:现在假设你已经安装完PhpStorm和PhpStudy软件. 我的PhpStorm使用的是默认安装目录,这个没什么疑问的,PhpStudy软件我选择解压的目录是G:\Program Files\ . 在PhpStudy软件的解压目录下的www文件夹就是我们的网站根目录. 现在我们使用PhpStorm新建一个新工程. 第一步:打开P

  • Windows下PyCharm配置Anaconda环境(超详细教程)

    首先来明确一下Python.PyCharm和Anaconda的关系 1.Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. 虽然Python3.5自带了一个解释器IDLE用来执行.py脚本,但是却不利于我们书写调试大量的代码.常见的是用Notepade++写完脚本,再用idle来执行,但却不便于调试.这时候就出现了PyCharm等IDE,来帮助我们调试开发. 2.PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调

随机推荐