Getting Started with Python PyAutoGUI
介绍
在本教程中,我们将学习如何在Python 3中使用pyautogui库。
这样的工具具有许多应用程序,其中一些应用程序包括截屏,自动化GUI测试(如Selenium),自动化只能用GUI完成的任务等。
在继续本教程之前,请注意,有一些先决条件。 您应该对Python的语法有基本的了解,并且/或者至少已经用其他某种语言完成了初学者级的编程。 除此之外,本教程对于初学者而言非常简单且易于遵循。
安装
对于所有操作系统,
视窗
对于Windows,
1 | $ pip install PyAutoGUI |
苹果电脑
对于Mac,需要先按顺序安装
1 2 3 | $ pip3 install pyobjc-core $ pip3 install pyobjc $ pip3 install pyautogui |
的Linux
对于Linux,唯一的依赖项是
1 2 | $ pip3 install python3-xlib $ pip3 install pyautogui |
基本代码示例
在本节中,我们将介绍
通用功能
position()函数
在使用
1 | import pyautogui as pag |
此
1 | pag.position() |
输出:
1 |
onScreen()函数
1 2 | print(pag.onScreen(500, 600)) print(pag.onScreen(0, 10000)) |
输出:
1 2 | True False |
在这里我们可以看到屏幕上存在第一个点,但是第二个点超出了屏幕的尺寸。
size()函数
1 | pag.size() |
输出:
1 | Size (width = 1440, height = 900) |
您的输出可能会有所不同,并且将取决于屏幕的大小。
常用鼠标操作
在本节中,我们将介绍用于鼠标操作的
moveTo()函数
1 | pag.moveTo(x_coordinate, y_coordinate) |
看下面的脚本:
1 2 3 4 5 | pag.moveTo(0, 0) pag.PAUSE = 2 pag.moveTo(100, 500) # pag.PAUSE = 2 pag.moveTo(500, 500) |
在上面的代码中,主要焦点是
上面的代码中引入的另一件事是
另一个解决方法是将每个
执行上述脚本可能会导致以下错误:
注意:可能的错误
1 2 3 4 5 6 7 8 | Traceback (most recent call last): File"a.py", line 5, in <module> pag.moveTo (100, 500) File"/anaconda3/lib/python3.6/site-packages/pyautogui/__init__.py", line 811, in moveTo _failSafeCheck() File"/anaconda3/lib/python3.6/site-packages/pyautogui/__init__.py", line 1241, in _failSafeCheck raise FailSafeException ('PyAutoGUI fail-safe triggered from mouse moving to a corner of the screen. To disable this fail-safe, set pyautogui.FAILSAFE to False. DISABLING FAIL-SAFE IS NOT RECOMMENDED.') pyautogui.FailSafeException: PyAutoGUI fail-safe triggered from mouse moving to a corner of the screen. To disable this fail-safe, set pyautogui.FAILSAFE to False. DISABLING FAIL-SAFE IS NOT RECOMMENDED. |
如果
1 | pag.FAILSAFE = False |
默认情况下启用此功能,以便您可以通过手动将鼠标移至屏幕的左上角来轻松停止执行
moveRel()函数
这意味着,当移动光标时,此功能的参考点将不是屏幕上的左上点(0,0),而是鼠标光标的当前位置。 因此,如果鼠标光标当前位于屏幕上的点(100,100),并且您使用参数
您可以使用
1 | pag.moveRel(100, 100, 2) |
相对于当前光标位置,上述脚本将在2秒内将光标向右移动100点,向下移动100点。
click()函数
1 | pag.click(x, y, clicks, interval, button) |
参数说明如下:
这是一个例子:
1 | pag.click(100, 100, 5, 2, 'right') |
您还可以执行以下特定的单击功能:
1 2 3 4 | pag.rightClick(x, y) pag.doubleClick(x, y) pag.tripleClick(x, y) pag.middleClick(x, y) |
与以前的函数一样,此处的
您还可以通过指定何时按下鼠标以及何时释放鼠标来对鼠标单击进行更细粒度的控制。 分别使用
这是一个简短的示例:
1 2 | pag.mouseDown(x=x, y=y, button='left') pag.mouseUp(x=x, y=y, button='left') |
上面的代码等效于仅执行
scroll()函数
我们要介绍的最后一个鼠标功能是
1 | pag.scroll(amount_to_scroll, x=x_movement, y=y_movement) |
要向上滚动,请为
1 | pag.scroll(100, 120, 120) |
好了,这就是鼠标功能。 现在,您应该已经能够控制鼠标的按钮以及通过代码进行的移动了。 现在让我们转到键盘功能。 有很多,但我们将只介绍最常用的那些。
常用键盘操作
在转到功能之前,重要的是要知道可以通过
1 | print(pag.KEYBOARD_KEYS) |
输出:
1 2 3 | ['\t', ' ', ' ', ' ', '!', '"', '#', '$', '%', '&',"'", '(', ')', '*', '+', ',', '-', '.', '/', '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'] |
typewrite()函数
1 | pag.typewrite(text, interval) |
1 | pag.typewrite('Junaid Khalid', 1) |
执行上面的脚本将在当前选择的字段中输入文本" Junaid Khalid",每次按键之间的间隔为1秒。
可以使用此功能的另一种方法是传递要按顺序按下的键列表。 为此,请参见下面的示例:
1 | pag.typewrite(['j', 'u', 'n', 'a', 'i', 'd', 'e', 'backspace', 'enter']) |
在上面的示例中,将输入文本
hotkey()函数
如果到目前为止您还没有注意到这一点,那么上面显示的键对于复制命令如
要同时按下两个或多个键,可以使用
1 2 3 | pag.hotkey('shift', 'enter') pag.hotkey('ctrl', '2' ) # For the @ symbol pag.hotkey('ctrl', 'c') # For the copy command |
screenshot()函数
如果您想在任何情况下截取屏幕截图,都可以使用
1 | scree_shot = pag.screenshot() # to store a PIL object containing the image in a variable |
这会将包含图像的PIL对象存储在变量中。
但是,如果要将屏幕截图直接存储到计算机,则可以这样调用
1 | pag.screenshot('ss.png') |
这会将屏幕快照保存在计算机上的文件中,并给出文件名。
Confirm(),alert()和prompt()函数
我们将在本教程中介绍的最后一组功能是消息框功能。 这是
确认框:显示信息并提供两个选项,即
警报框:显示一些信息并确认已阅读。 它显示一个按钮,即
提示框:向用户请求一些信息,输入后,用户必须单击
现在我们已经了解了类型,让我们看看如何以与上述相同的顺序在屏幕上显示这些按钮:
1 2 3 | pag.confirm("Are you ready?") pag.alert("The program has crashed!") pag.prompt("Please enter your name:") |
在输出中,您将看到以下消息框序列。
确认: