Python pyautogui 库 | 使用自动化测试

2025年03月17日 | 阅读 9 分钟

当我们多次做同样的工作时,我们人类会感到无聊。我们总是在寻找能够克服它的方法。所以一个解决方案摆在我们面前:我们可以创建一些东西,只需单击一下即可完成此类任务。

自动化在我们的生活中扮演着重要的角色,它使我们能够在过程中完成更多的任务。

Python 提供了许多有用且高级的库,使 Python 程序员的生活更轻松。pyautogui 库是这些有用方法的大量集合之一。在本教程中,我们将学习 pyautogui 库并使用其功能将其实现到代码中。因此,事不宜迟,让我们简要介绍一下 pyautogui 库。

什么是 pyautogui 库?

Python pyautogui 库是一个自动化库,允许控制鼠标和键盘。或者我们可以说它方便我们自动化鼠标和键盘的移动,以使用 Python 脚本建立与其他应用程序的交互。它提供了许多功能,下面列出了一些。

  • 我们可以在其他应用程序的窗口中移动鼠标并点击。
  • 我们可以向其他应用程序发送按键。例如 - 填写表格,在浏览器中输入搜索查询等。
  • 我们还可以截取快照并给出图像。
  • 它允许我们定位应用程序的窗口,并移动、最大化、最小化、调整大小或关闭它。
  • 显示警报和消息框。

pyautogui 库的安装

Windows 操作系统

它是一个第三方库,因此在使用它之前需要安装。我们可以使用 pip 命令安装它。您可以创建虚拟环境或全局安装它。打开命令提示符并输入以下命令。

Mac 操作系统

Linux 操作系统

安装完成后,我们就可以探索其属性了。

Pyautogui 基本函数

在本节中,我们将介绍 pyautogui 库的一些基本函数。首先,创建一个新文件并导入 pyautogui 库。

  • size() 方法 - 它返回主显示器的大小。让我们看以下示例。

示例 -

输出

The Screen Width is:  1366
The Screen Height is:  768
  • position() 方法 - 它返回鼠标的 XY 坐标。让我们了解以下示例。

示例 -

输出

X Cordinate is:  839
Y Cordinate is:  635
  • onscreen() 方法 - 此方法返回布尔值,表示坐标为 x 和 y 的点是否存在于屏幕上。让我们了解以下示例。

示例 -

输出

True
False

我们提供的 0 到 1500 超出了屏幕的尺寸,因此它返回 False。

基本鼠标功能

本节将介绍如何使用 pyautogui 库自动化鼠标。下面是一些常用的鼠标操作方法,例如将光标从一个点移动到另一个点以及自动单击按钮。让我们看以下方法。

moveTo() 方法 -

它将鼠标移动到 XY 坐标。它接受三个参数 - X、Y 坐标和持续时间(在给定持续时间设置持续时间)。

当运行上述函数时,光标将根据给定的时间持续时间移动到指定的坐标。持续时间以秒为单位。我们传递了十秒,这意味着光标将需要十秒才能定位坐标。

在使用此方法时,可能会遇到以下错误。

注意 - 可能的错误

如果出现此类错误,则表示您的计算机的故障安全已启用。要克服此错误,我们需要禁用故障安全。因此,在代码的开头包含以下行。

moveRel() 函数

moveRel() 函数允许我们相对于当前鼠标位置移动光标。假设光标位于屏幕上的 (100, 100) 处,并且我们使用参数 (100, 100, 3) 调用 moveRel() 函数,则新位置将是 (300, 300)。

上述行将在 3 秒内将光标向右移动 100 点,向左移动 100 点。

click() 函数

click() 方法的工作方式与鼠标的单击按钮相同。下面是 click() 方法的语法。语法如下。

参数 -

  • x - 它是要到达的点的 x 坐标。
  • y - 它是要到达的点的 y 坐标。
  • clicks - 它表示光标移动到屏幕时点击的次数。
  • Interval - 它定义了每次鼠标点击之间的间隔。
  • button - 它指定了当光标到达屏幕上的点时我们要按下的按钮。我们可以传递 right、left 和 middle 值。

我们可以如下使用它。

以下函数也可以用于移动鼠标。

此库还允许我们通过指定何时按下鼠标以及何时释放鼠标来更好地控制鼠标点击。mouseDown 和 mouseUp 方法可以帮助我们做到这一点。

下面是示例。

示例 -

scroll() 函数

scroll() 是最重要的函数之一,正如其名称所示,它用于向上和向下滚动。语法如下。

语法 -

正值用于定义 amount_to_scroll 参数以向上滚动,而要向下滚动,我们需要指定负值。下面是示例。

因此,我们已经讨论了几乎所有控制鼠标的功能。使用这些方法,我们可以执行与使用物理鼠标相同的任何操作。在下一节中,我们将介绍如何使用各种功能来控制键盘。有许多功能可用,但我们将讨论一些重要的功能。

常见键盘操作

pyautogui 库提供了使用 Python 脚本按下键盘按键的功能。让我们运行以下代码来检查可用的按键。

输出

['\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']

typewrite() 函数

typewrite() 函数用于在文本字段中写入内容。语法如下。

语法 -

文本参数是要提供的文本,interval 是每次按键之间的时间(以秒为单位)。下面是示例。

示例 -

“Sachin Kumar” 将被写入文本字段,并且每次按键之间将暂停 2 秒。

我们可以传递我们想要按下的按键序列。为此,我们可以使用以下代码。

上述代码将输入文本 Sachin,然后删除末尾的 e。

hotkey() 函数

大多数时候,我们使用成对的按键来执行特定任务,例如 Control + C 用于复制文本。但是我们不能将 ['ctrl' + c] 传递给 typewrite() 函数。它可以一个接一个地按下按钮,但不能像我们按住 Control 键同时按下 C 来复制内容那样同时按下。为此,我们使用 hotkey() 函数,它帮助我们同时按下两个或更多按键。为此,我们使用 hotkey() 函数,它帮助我们同时按下两个或更多按键。让我们看以下示例。

示例 -

screenshot() 函数

screenshot() 函数用于在任何实例截取屏幕截图。语法如下。

语法 -

它将一个包含图像的 PIL 对象存储在一个变量中。我们还可以将屏幕截图存储在所需的路径中,如下所示。

消息框函数

这些函数用于暂停/延迟程序,直到用户单击“确定”或类似按钮,也用于向用户显示消息。

alert() 函数

它用于显示带有文本消息和“确定”按钮的消息框。让我们看以下示例。

示例 -

输出

Python pyautogui Library

当我们点击“确定”按钮时,它返回按钮文本。

'OK'

confirm() 函数

此方法用于显示多个选项,或者我们可以说“确定”和“取消”按钮。数量和文本可以自定义。它返回点击的按钮的文本。让我们看下面的示例。

示例 -

输出

Python pyautogui Library
'Cancel'

我们还可以根据需要添加更多按钮。我们只需将其传递到按钮列表中。

Python pyautogui Library
'Not Sure'

prompt() 函数

它用于显示带有文本输入以及“确定”和“取消”按钮的消息框,并返回输入的文本。让我们看以下示例。

示例 -

输出

Python pyautogui Library

alert() 函数

顾名思义,它用于在屏幕上显示警报消息。让我们看以下示例。

示例 -

输出

Python pyautogui Library

password() 函数

它显示带有文本输入的消息框,并且输入的字符显示为 *。让我们看以下示例。

示例 -

输出

Python pyautogui Library

Pyautogui 库的一些示例

示例 - 1: 在下面的代码中,我们使用 pyautogui 库自动化打开 Chrome。复制以下代码并将其运行到您的 IDE 中。

代码 -

示例 - 2

当我们执行上述代码时,它会打开一个窗口,我们可以在其中选择要打开的任何文件。最后,我们选择文件,终端打印所选文件名并在给定秒数后打开它。

结论

在本教程中,我们介绍了 pyautogui 库及其重要方法。这些方法帮助我们在 Python 中创建自动化。我们还讨论了它在不同操作系统中的安装。您可以使用此库来自动化您的日常任务。