【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)


目录
相关文章
|
6月前
|
传感器 监控 安全
DC/DC电源模块在工业自动化领域的应用
DC/DC电源模块在工业自动化领域的应用
DC/DC电源模块在工业自动化领域的应用
|
3月前
|
Web App开发 JavaScript 前端开发
ChatGPT与基于GUI的自动化测试
ChatGPT与基于GUI的自动化测试,chrome浏览器+ cypress +HTML代码需要主机名脚本语言和测试目标的URL。
29 10
|
6月前
|
安全
DC/AC电源模块也成为了推动工业自动化生产技术进步的重要组成部分
DC/AC电源模块也成为了推动工业自动化生产技术进步的重要组成部分
DC/AC电源模块也成为了推动工业自动化生产技术进步的重要组成部分
|
6月前
DC/AC电源模块推动了工业自动化生产技术的发展
DC/AC电源模块作为电力转换装置,能够将直流电转换为交流电,并提供给工业设备供电。它的出现极大地推动了工业自动化生产技术的发展。
DC/AC电源模块推动了工业自动化生产技术的发展
|
6月前
DC/AC电源模块为工业自动化生产提供了稳定的电源供应
DC/AC电源模块则是将直流电能转换为交流电能的关键设备,可以将各种类型的直流电源转换为适用于不同设备的交流电源,为工业自动化生产提供了稳定的电源供应。
DC/AC电源模块为工业自动化生产提供了稳定的电源供应
|
5月前
|
运维 数据安全/隐私保护 Python
Python基于telnetlib模块实现交换机全面巡检自动化运维项目
Python基于telnetlib模块实现交换机全面巡检自动化运维项目
164 14
|
6月前
DC/AC电源模块具有高效率、高可靠性和灵活性的特点,广泛应用于各种工业自动化设备
DC/AC电源模块具有高效率、高可靠性和灵活性的特点,广泛应用于各种工业自动化设备。
DC/AC电源模块具有高效率、高可靠性和灵活性的特点,广泛应用于各种工业自动化设备
|
6月前
BOSHIDA DC/AC电源模块:推动工业自动化技术的发展
BOSHIDA DC/AC电源模块:推动工业自动化技术的发展
BOSHIDA DC/AC电源模块:推动工业自动化技术的发展
|
5月前
DC/AC电源模块在工业自动化中扮演着重要角色
DC/AC电源模块在工业自动化中扮演着重要角色
DC/AC电源模块在工业自动化中扮演着重要角色
|
7月前
|
机器人 物联网 智能硬件
AC/DC电源模块广泛应用于工业自动化领域
AC/DC电源模块是一种将交流电转换为直流电的设备,广泛应用于工业自动化领域
AC/DC电源模块广泛应用于工业自动化领域
下一篇
无影云桌面