如何使用PyAutoGUI的自动化

696 阅读7分钟

使用PyAutoGUI的自动化介绍

做同样的重复性工作可能有点无聊。将这类活动自动化可以为我们节省很多时间,并帮助我们在其他领域提高生产力。

我们可以通过一个被称为PyAutoGUI的Python库来实现自动化过程。

在这篇文章中,我们要看一下一个简单的自动化任务。

它涉及到启动谷歌浏览器,点击搜索栏,输入一个YouTube网址,搜索一个视频(在这里是一个快照),并点击它来播放。然后,我们将最小化浏览器窗口。

前提条件

要跟上本文的进度,你需要。

  • 在你的机器上安装Python。
  • 有一个代码编辑器,最好是 VS 代码。
  • 在你的机器上安装一个浏览器,最好是谷歌浏览器。

目标

在本文结束时,你应该能够。

  • 自动处理鼠标移动和点击。
  • 自动按动键盘按键。
  • 自动向文本框中输入信息。

设置我们的项目

为了开始,创建一个名为自动化基本任务的文件夹。

导航到这个文件夹并创建一个名为automation.py 的文件。我们使用.py 的文件扩展名,因为它是一个 Python 文件。

最后,用你的代码编辑器打开该文件。

在这个例子中,我们使用的是 VS Code。

启动VS Code的集成终端,输入以下命令。

py -m pip install pyautogui

上面的命令用于在 windows 上安装 PyAutoGUI。

免责声明:在这篇文章中,我使用了与我的屏幕尺寸相对应的坐标。

要跟上这篇文章,你需要使用MouseInfo Python库来确定与你要执行自动化操作的位置相对应的正确坐标。

根据你的网速,调整执行操作的时间长度。

在缓慢的网络连接上使用较短的持续时间可能会导致错误,因为页面没有完全加载。

获取坐标

PyAutoGUI 使用屏幕坐标来确定执行操作的准确位置,如点击、输入、滚动、按压和拖动。

MouseInfo 是 PyAutoGUI 库中的一个模块。你需要在一个单独的文件中编写并运行下面的代码。

import pyautogui

pyautogui.mouseInfo()

代码解释。

  • import pyautogui - 这行代码用于将PyAutoGUI库导入我们的项目中。

pyautogui.mouseInfo() - 我们用这个命令来检索点在屏幕上的x,y坐标。

当你运行上述代码时,它将显示一个对话框,显示光标所处位置的点的x和y坐标。

如果你想得到屏幕上另一个点的坐标,把光标移到那个点上,它就会向你显示坐标。

当你把光标从屏幕上的一个点移动到另一个点时,你会注意到,当你离开左上角时,坐标会增加。

这是因为左上角的像素位于坐标(0,0)处,这使得它成为原点。

重要的是要知道x和y坐标是如何分别代表垂直移动和水平移动的。这是因为坐标的单位是像素。

在学习了基础知识后,我们现在可以开始进行自动化任务了。

在一个.py 文件中添加以下代码。

import pyautogui
import time
time.sleep(2)
pyautogui.moveTo(69,750)
pyautogui.click(69,750,duration=1)
pyautogui.write('Chrome')
pyautogui.moveTo(478,363,duration=1)
pyautogui.click(478,363,duration=1)
pyautogui.moveTo(177,58,duration=1)
pyautogui.click(177,58,duration=1)
pyautogui.write('https://www.youtube.com/')
pyautogui.press('enter')
pyautogui.moveTo(458,135,duration=2)
pyautogui.click(458,135,duration=2)
pyautogui.write('perfect strangers')
pyautogui.press('Enter')
pyautogui.moveTo(763,222,duration=3)
pyautogui.click(763,222,duration=3)
pyautogui.moveTo(1253,27,duration=3)
pyautogui.click(1253,27,duration=3)

在这段代码的第一行,import pyautogui ,我们导入了PyAutoGUI来实现python脚本的自动化。

这有助于我们使用键盘和鼠标,而不需要实际接触这些设备。

下一行代码,import time ,用于将时间模块导入我们的项目中。

我们使用time 模块来处理与时间有关的功能,如设置延迟和一个操作在执行前应花费的时间。

time.sleep(2) 这一行代码将延迟时间设置为2秒。这使我们有足够的时间从VS Code移动到我们的搜索栏来搜索Chrome。

pyautogui.moveTo() 函数自动将光标从一个点移动到另一个点,这是由作为参数传递的x、y坐标指定的。

当我们传递69,750 作为x和y坐标时,我们的光标从当前位置移动到点(69, 750)。

你可以选择传递持续时间作为这个特殊函数的第三个参数。例如,pyautogui.moveTo(69, 750, duration=1) 。这里,我们将持续时间设置为一秒钟。

这意味着光标将需要一秒钟的时间从当前位置移动到指定的点。如果你希望移动是瞬时的,你不需要把持续时间作为第三个参数传给他。

pyautogui.click(69, 750, duration=1) 函数用于自动化鼠标点击。它有三个参数传递给它,即x、y坐标和持续时间。

在这里,我们正在指示我们的鼠标在一秒钟后点击点(69,750)。所以当我们的鼠标移动到我们用这些坐标指定的搜索栏后,它就会点击它。

鼠标有三个选项用于点击;鼠标左键、中键和右键。因此,你必须指定要按哪个按钮

鼠标左键通常是默认的。例如,pyautogui.click(50,890,button='right') 。这段代码在点(50,890)处执行了右键点击。

你也可以使用pyautogui.doubleClick() 函数执行双击。

pyautogui.write('Chrome') 是一个用于自动打字的键盘函数。它自动输入你传递给它的字符串参数。

然而,你应该首先使用pyautogui.click() 函数点击你想写该字符串的确切位置。

我们传递'Chrome'作为它的参数,因为我们希望搜索栏能够搜索Chrome。

搜索到Chrome后,我们使用pyautogui.moveTo(478,363,duration=1) ,移动光标来启动Chrome。

将光标移动到打开Chrome的位置后,我们需要点击它来打开。我们通过输入这个代码来实现,pyautogui.click(478,363,duration=1)

然后我们将光标移动到Chrome的地址栏,用pyautogui.moveTo(177,58,duration=1) 方法输入YouTube的网址。

移动光标后,我们点击地址栏,激活它进行输入操作。我们通过使用pyautogui.click(177,58,duration=1) 来做到这一点。

现在我们可以继续使用以下代码执行我们的写操作,pyautogui.write('https://www.youtube.com/')

然后,我们将键盘按压功能自动化,按下Enter 键来搜索YouTube。这可以通过使用pyautogui.press('enter')

在YouTube加载后,我们使用这行代码将光标移至其搜索栏,pyautogui.moveTo(458,135,duration=2)

我们应该点击那个特定的搜索栏,以便我们进行写操作。键入pyautogui.click(458,135,duration=2) 来启用这个功能。

使用这行代码,在YouTube搜索栏中输入pyautogui.write('perfect strangers') 。这将搜索 "完美陌生人"。

为了使搜索发生,你必须使用pyautogui.press('Enter') 方法点击enter

在搜索并带来结果后,我们需要移动光标来点击我们想要的搜索项目。移动操作是由这个代码实现的,pyautogui.moveTo(763,222,duration=3)

我们需要点击视图来播放歌曲。我们使用pyautogui.click(763,222,duration=3) 这个函数来完成。

这个自动化的最后一步是最小化YouTube窗口。同样,你使用这段代码,pyautogui.moveTo(1253,27,duration=3) ,将光标移动到最小化按钮的位置。

最后,通过点击最小化按钮执行最小化操作,使用此代码,pyautogui.click(1253,27,duration=3)

这个自动化过程中可能出现的一些错误包括。

  • 鼠标以极快的速度到处移动。
  • 键盘几乎以多种冲动敲击按键。

为了恢复这些问题,你可以采取以下措施。

  • 使用PyAutoGUI的故障安全功能。PYAUTOGUI在执行后有一秒的延迟10<sup>th</sup> 。当你把光标滑到屏幕的四个角落之一时,Py AutoGUI会引发一个故障安全的异常。

  • 在最坏的情况下,你将不得不注销。你可以通过按组合键来做到这一点,对于Unix和微软用户来说,就是CTRL+ALT+DEL。

结论

上面的代码显示了一个使用PyAutoGUI库的简单的鼠标和键盘自动化。

你可以修改上面的代码,用它来实现你的日常重复性工作的自动化。