在这篇文章中,我们将介绍一些用Python实现机器人过程自动化的包。机器人流程自动化(Robotic process automation,简称RPA)是指将鼠标点击和键盘按压自动化的过程,即模拟人类用户的操作。RPA用于各种应用程序,包括数据输入、会计、财务等。我们将介绍pynput、pyautogui和pywinauto。这三个包中的每一个都可以作为构建自己的RPA应用程序以及构建UI测试应用程序的起点。
pynput
我们要讨论的第一个包是pynput。pynput的优点之一是它在Windows和macOS上都可以工作。另一个不错的功能是它具有监视键盘和鼠标输入的功能。让我们开始使用pynput,使用pip安装它:
pip install pynput
安装好之后,就可以开始导入Controller和Button类了。然后,我们将创建Controller类的一个实例,我们将其称为mouse。这将模拟您的计算机的鼠标,让您以编程方式点击按钮和移动鼠标在屏幕上。
from pynput.mouse import Button, Controller
mouse = Controller()
接下来,让我们看几个简单的命令。要右击或左击,我们可以使用上面导入的Button类。
# left-click
mouse.press(Button.left)
# right-click
mouse.press(Button.right)
要双击,您只需要添加数字2作为第二个参数。
mouse.press(Button.left, 2)
我们还可以使用move方法将鼠标指针移动到不同的位置。
mouse.move(50, -50)
mouse.move(100, -200)
Pynput也可以控制键盘。为此,我们需要导入Key类
from pynput.keyboard import Key
要创建键盘类型,可以使用适当命名的键盘。类型的方法。
keyboard.type("this is a test")
如上所述,pynput还可以监视鼠标移动和键盘按压。要了解有关该功能和输出的更多信息,请查看此链接。
pyautogui
也许最常见的模拟鼠标点击和键盘输入的包是pyautogui库。pyautogui适用于Windows、Linux和macOS。如果你没有安装它,你可以使用pip安装它:
pip install pyautogui
Pyautogui也很容易使用。例如,如果你想模拟键入一串文本,只需使用typewrite方法:
pyautogui.typewrite("test pyautogui!")
要左键单击鼠标,可以使用click方法。要右键单击,可以使用rightClick方法。
# left-click
pyautogui.click(100, 200)
# right-click
pyautogui.rightClick(100, 200)
- 搜索屏幕图像
pyautogui最酷的功能之一是它可以在计算机屏幕上搜索图像。这是非常有用的,如果你需要找到一个特定的按钮点击。您可以通过在locateOnScreen方法中输入图像文件名来搜索图像。该函数返回topleft坐标以及已识别图像的高度和宽度。
location = pyautogui.locateOnScreen("random_image.png")
为了得到识别图像的中心,使用中心法。然后,您可以使用click方法单击已识别图像的中心-在本例中是屏幕上的按钮。
center = pyautogui.center(location)
pyautogui.click(center)
有时在屏幕上可能找不到图像。在这种情况下,您可以向locateOnScreen添加confidence参数,为Python提供识别图像的置信度。
pyautogui.locateOnScreen("random_image.png", confidence = 0.95)
- 截屏
您可以使用截图方法在pyautogui中截取屏幕截图。传递一个文件名将把屏幕截图保存到该文件。
s = pyautogui.screenshot("sample_screenshot.png")
也可以截取特定区域的截图,而不是全屏:
pyautogui.screenshot(region = c(0, 0, 100, 200))
你也可以参考上篇文章了解更多特性。
pywinauto
在Windows上,我们可以研究的另一个选项是pywinauto库。这个库的主要缺点是它不能在macOS或Linux上工作。不过,它也为Windows用户提供了一些不错的优势。首先,它的语法是面向对象的——它被设计得更加python化。其次,由于它的设计,库可以更容易地执行某些任务,如单击特定按钮或查找应用程序中的菜单项。
例如,让我们从启动记事本开始,输入一些文本,并保存文件。我们可以使用下面的代码片段来做到这一点。在这里,我们通过使用Application类启动Notepad。然后,我们引用我们刚刚打开的记事本文件“UnitledNotepad”。我们可以使用编辑。Type_keys开始输入文本。
from pywinauto.application import Application
app = Application(backend="uia").start("notepad.exe")
app.UntitledNotepad.Edit.type_keys("Starting notepad...")
app.UntitledNotepad.menu_select("File->SaveAs")
sub_app=app.UntitledNotepad.child_window(title_re = "Save As")
sub_app.FileNameCombo.type_keys("test_file.txt")
sub_app.Save.click()
通过查看官方文档了解更多关于pywinauto的信息。
最后总结
本文介绍了用Python实现机器人过程自动化的三个包,方便读者选择、对比学习。