马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在这篇文章中,我们将介绍一些用Python实现机器人过程主动化的包。机器人流程主动化(Robotic process automation,简称RPA)是指将鼠标点击和键盘按压主动化的过程,即模拟人类用户的操作。RPA用于各种应用程序,包罗数据输入、会计、财务等。我们将介绍pynput、pyautogui和pywinauto。这三个包中的每一个都可以作为构建本身的RPA应用程序以及构建UI测试应用程序的出发点。
pynput
我们要讨论的第一个包是pynput。pynput的优点之一是它在Windows和macOS上都可以工作。另一个不错的功能是它具有监视键盘和鼠标输入的功能。让我们开始利用pynput,利用pip安装它:
安装好之后,就可以开始导入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安装它:
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实现机器人过程主动化的三个包,方便读者选择、对比学习。
|