【PyAutoGUI操作指南】01 三分钟快速实现跨平台GUI自动化模块

简介: 作为安全功能,默认情况下启用故障保护功能。当调用PyAutoGUI函数时,如果鼠标位于主监视器的四个角中的任何一个,它们将引发PyAutoGUI.FailSafeException。在调用每个PyAutoGUI函数后,会有十分之一秒的延迟,以便用户有时间将鼠标猛击到角落以触发故障保险。

PyAutoGUI操作指南


PyAutoGUI是一个纯Python的GUI自动化工具,通过它可以让程序自动控制鼠标和键盘的一系列操作来达到自动化测试的目的。


作为安全功能,默认情况下启用故障保护功能。当调用PyAutoGUI函数时,如果鼠标位于主监视器的四个角中的任何一个,它们将引发PyAutoGUI.FailSafeException。在调用每个PyAutoGUI函数后,会有十分之一秒的延迟,以便用户有时间将鼠标猛击到角落以触发故障保险。


# 来禁用此故障保护 但是不建议
pyautogui.FAILSAFE = False 
# 10秒延迟由 pyautogui.PAUSE 设置,默认为0.1。您可以更改此值。
# pyautogui.DARWIN_CATCH_UP_TIME 设置在macOS上添加额外延迟在键盘和鼠标事件之后,因为在PyAutoGUI发出这些事件之后,操作系统似乎需要延迟。默认设置为0.01,增加额外的百分之一秒延迟。


1 安装


pip install pyautogui

507b0df2287e482ea2da199ebb34cc63.png


2 PyAutoGUI的快速入门参考


PyAutoGUI是在Python运行的跨平台GUI自动化模块,可以控制鼠标和键盘以及执行基本图像识别,以自动化计算机上的任务。


2.1 基本功能


import pyautogui
import pyautogui
a = pyautogui.position()
print("鼠标的当前位置:",a)
screen_width_height = pyautogui.size()
print("屏幕的当前尺度:",screen_width_height)
x = 500
y = 700
flag = pyautogui.onScreen(x,y)
print("判断当前坐标是否在屏幕中:",flag)

04561ca3f0fe48bdadf49dc479701a77.png


2.2 关闭安全功能


import pyautogui
# 在每次PyAutoGUI调用后设置2.5秒暂停:
pyautogui.PAUSE = 2.5
# 当故障保护模式为True时,将鼠标移到左上方将显示 pyautogui.FailSafeException:
pyautogui.FAILSAFE = True


2.3 鼠标功能


X,Y坐标在屏幕左上角为(0,0)原点。X向右增加,Y向下增加。


2.3.1 将鼠标移动到绝对位置(x,y)位置,经过num_seconds秒


import pyautogui
# 将鼠标移动到绝对位置(x,y)位置,经过num_seconds秒
# 如果持续时间为0或未指定,则立即移动。
# 注意:在Mac上拖动不能立即进行。
x = 10
y = 20
num_seconds = 1
pyautogui.moveTo(x, y, duration=num_seconds);


2.3.2 将鼠标移动到当前坐标的相对位置(x,y)位置,经过num_seconds秒


import pyautogui
# 将鼠标移动到当前坐标的相对位置(x,y)位置,经过num_seconds秒
xOffset = 10
yOffset = 10
num_seconds = 1
pyautogui.dragRel(xOffset, yOffset, duration=num_seconds)


2.3.3 在鼠标当前位置用左键单击鼠标


import pyautogui
# 调用click()只需在鼠标当前位置用左键单击鼠标一次,但关键字参数可以改变这一点:
# button关键字参数可以是“left”、“middle”或“right”。
moveToX = 1
moveToY = 2
num_of_clicks = 1
num_seconds = 1
pyautogui.click(x=moveToX, y=moveToY, clicks=num_of_clicks, interval=secs_between_clicks, button='left')


2.3.4 所有的点击都可以用click()完成,但这些函数是为了可读性而存在的


import pyautogui
moveToX = 1
moveToY = 2
# 右键
pyautogui.rightClick(moveToX, moveToY)
# 中键
pyautogui.middleClick(moveToX, moveToY)
# 双击
pyautogui.doubleClick(moveToX, moveToY)
# 
pyautogui.tripleClick(moveToX, moveToY)


2.3.5 正向滚动将向上滚动,反向滚动将向下滚动


import pyautogui
# 正向滚动将向上滚动,反向滚动将向下滚动
# 在moveToX,moveToY位置,上下滚动
moveToX = 1
moveToY = 2
pyautogui.scroll(amount_to_scroll, x=moveToX, y=moveToY)


2.3.6 单个按钮按下和向上事件可以单独调用:


import pyautogui
# 单个按钮按下和向上事件可以单独调用:
moveToX = 10
moveToY = 20
# 在指定位置按下鼠标左键
pyautogui.mouseDown(x=moveToX, y=moveToY, button='left')
# 在指定位置抬起鼠标左键
pyautogui.mouseUp(x=moveToX, y=moveToY, button='left')


2.4 键盘功能


2.4.1


import pyautogui
# 按键转到函数调用时键盘光标所在的位置。
# interval参数用于指定每两个字符之间输入的时间间隔。
pyautogui.typewrite('Hello world!\n', interval=secs_between_keys)


2.4.2 在光标位置依次输入指定的字符列表:


import pyautogui
# interval参数用于指定每两个字符之间输入的时间间隔
# 例如(先按a,再按b,再按c,再按<—,再按删除键,再按回车键,再按f1键):
pyautogui.typewrite(['a', 'b', 'c', 'left', 'backspace', 'enter', 'f1'],interval=secs_between_keys)


2.4.3 实现同时按下指定按键(快捷键的实现)


import pyautogui
# 密钥名称的完整列表位于中。键盘热键(如Ctrl-S或Ctrl-Shift-1)
# 可以通过将键名称列表传递给hotkey()来完成:
# ctrl-c 复制
pyautogui.hotkey('ctrl', 'c')
# ctrl-v 粘贴
pyautogui.hotkey('ctrl', 'v')


2.4.4 单个键的按下和向上事件


# 单个按钮按下和向上事件可以单独调用:
key_name = 'a'
# 按下
pyautogui.keyDown(key_name)
# 抬起
pyautogui.keyUp(key_name)


2.5 消息框功能


暂停程序,直到单击某个内容上的“确定”,或者显示一些信息:


2.5.1 向用户展示信息,只有一个确定键


import pyautogui
# 向用户展示信息,只有一个确定键
pyautogui.alert('该提醒框,只有一个确定按钮')


a2a9b6a6319d475285ec03b8ac56ef85.png


2.5.2 用户需要点击确定或者取消


import pyautogui
# 用户需要点击确定或者取消
pyautogui.confirm('该提醒框包括一个确定按钮 一个取消按钮')

5fc4c2862c384b0091596b4a2f6428f7.png


2.5.3 带有输入框的消息框


import pyautogui
# 如果用户单击“取消”,prompt()函数将返回None。
pyautogui.prompt('该提醒框可以输入一串字符串,并带有一个确定 一个取消按钮')

9390fa6e34ca495b8b946aa5da7c23aa.png


2.6 屏幕截图功能


在Linux上,必须运行sudo-apt-get-install-scrot才能使用屏幕截图功能。


2.6.1 PIL图像对象信息,不保存带本地


import pyautogui
img_object = pyautogui.screenshot()
print("PIL图像对象:",img_object)
# PIL图像对象: <PIL.Image.Image image mode=RGB size=1920x1080 at 0x282E8EE9160>


2.6.2 获取PIL图像并保存到本地


import pyautogui
# 获取PIL图像并保存到本地
img_object = pyautogui.screenshot('foo.png')
print("PIL图像对象:",img_object)
# PIL图像对象: <PIL.Image.Image image mode=RGB size=1920x1080 at 0x282E91BE940>


2.6.3 寻找屏幕上第一个感兴趣图像的位置


import pyautogui
# 寻找屏幕上第一个感兴趣图像的位置
img_object_location = pyautogui.locateOnScreen('looksLikeThis.png')
# 返回第一个图像的left, top, width,height)
print("第一个感兴趣图像的位置信息",img_object_location)
# 第一个感兴趣图像的位置信息 Box(left=858, top=166, width=85, height=28)


2.6.4 寻找屏幕上所有感兴趣图像的位置


import pyautogui
# 寻找屏幕上所有感兴趣图像的位置
for img_object_location_i in pyautogui.locateAllOnScreen('looksLikeThis.png'):
    print("感兴趣图像的位置信息",img_object_location_i)
# 感兴趣图像的位置信息 Box(left=858, top=166, width=85, height=28)


2.6.5 返回在屏幕上感兴趣图像中间位置的(X,Y)的坐标


import pyautogui
# 返回在屏幕上感兴趣图像中间位置的(X,Y)的坐标,如果在屏幕上找不到图像将返回“None”,速度慢,1~2S
location_x_y = pyautogui.locateCenterOnScreen('looksLikeThis.png')
print("感兴趣图像中间位置的(X,Y)的坐标",location_x_y)
# 感兴趣图像中间位置的(X,Y)的坐标 Point(x=900, y=180)


目录
相关文章
|
16小时前
|
监控 安全 搜索推荐
简化工作流程!邮件自动化如何助力Workplace操作高效化?
电子邮件在现代职场中扮演核心角色,不仅是通信工具,更是企业运营的关键。自动化驱动的电子邮件提高了效率,用于需求生成、流程管理和交易审批等。电子邮件自动化分为营销、事务性和操作性,各有特定触发器和目标,但也带来收件箱管理挑战。通过过滤、优先级设定和规则管理,收件人可更有效地处理自动化邮件。随着数字化转型,电子邮件将继续影响客户旅程和企业内部流程,未来的系列文章将进一步探讨这一主题。
18 1
|
16小时前
|
JavaScript 前端开发 Python
【python自动化】Playwright基础教程(三)定位操作
【python自动化】Playwright基础教程(三)定位操作
56 0
|
16小时前
|
并行计算 Linux 计算机视觉
还在手工标注数据集?快来试一试自动化多模型标注大模型-gui交互式标注(部署运行教程-高效生产力)
还在手工标注数据集?快来试一试自动化多模型标注大模型-gui交互式标注(部署运行教程-高效生产力)
96 0
|
16小时前
|
传感器 机器人 测试技术
BOSHIDA DC电源模块在工业自动化中的关键应用案例分析
BOSHIDA DC电源模块在工业自动化中的关键应用案例分析 DC电源模块在工业自动化中有许多关键应用案例,以下是其中的一些:
BOSHIDA DC电源模块在工业自动化中的关键应用案例分析
|
16小时前
|
Python
【python自动化】Playwright基础教程(五)事件操作②悬停&输入&清除精讲
【python自动化】Playwright基础教程(五)事件操作②悬停&输入&清除精讲
55 0
|
7月前
|
Python Windows
编程小白的自学笔记十六(python办公自动化操作EXCEL表格)
编程小白的自学笔记十六(python办公自动化操作EXCEL表格)
|
7月前
|
存储 API iOS开发
编程小白的自学笔记十五(python办公自动化操作EXCEL表格)
编程小白的自学笔记十五(python办公自动化操作EXCEL表格)
|
16小时前
|
API Python
【python自动化】Playwright基础教程(四)事件操作①高亮&元素匹配器&鼠标悬停
【python自动化】Playwright基础教程(四)事件操作①高亮&元素匹配器&鼠标悬停
36 0
|
7月前
|
运维 Linux
Ansible自动化运维工具之常用模块使用实战(6)
Ansible自动化运维工具之常用模块使用实战(6)
|
16小时前
|
传感器 监控
BOSHIDA DC电源模块在工业自动化中的应用案例分析
BOSHIDA DC电源模块在工业自动化中的应用案例分析 BOSHIDA DC电源模块在工业自动化中有很多应用案例,以下是其中几个典型的例子:
BOSHIDA   DC电源模块在工业自动化中的应用案例分析