Python 三种方式实现主动化任务

[复制链接]
发表于 2024-11-16 01:41:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在这篇文章中,我们将介绍一些用Python实现机器人过程主动化的包。机器人流程主动化(Robotic process automation,简称RPA)是指将鼠标点击和键盘按压主动化的过程,即模拟人类用户的操作。RPA用于各种应用程序,包罗数据输入、会计、财务等。我们将介绍pynput、pyautogui和pywinauto。这三个包中的每一个都可以作为构建本身的RPA应用程序以及构建UI测试应用程序的出发点。
  


pynput

我们要讨论的第一个包是pynput。pynput的优点之一是它在Windows和macOS上都可以工作。另一个不错的功能是它具有监视键盘和鼠标输入的功能。让我们开始利用pynput,利用pip安装它:
  1.         pip install pynput
复制代码
安装好之后,就可以开始导入Controller和Button类了。然后,我们将创建Controller类的一个实例,我们将其称为mouse。这将模拟您的计算机的鼠标,让您以编程方式点击按钮和移动鼠标在屏幕上。
  1. from pynput.mouse import Button, Controller
  2. mouse = Controller()
复制代码
接下来,让我们看几个简单的命令。要右击或左击,我们可以利用上面导入的Button类。
  1. # left-click
  2. mouse.press(Button.left)
  3. # right-click
  4. mouse.press(Button.right)
复制代码
要双击,您只必要添加数字2作为第二个参数。
  1.        
  2. mouse.press(Button.left, 2)
复制代码
我们还可以利用move方法将鼠标指针移动到不同的位置。
  1. mouse.move(50, -50)
  2. mouse.move(100, -200)
复制代码
Pynput也可以控制键盘。为此,我们必要导入Key类
  1. from pynput.keyboard import Key
复制代码
要创建键盘类型,可以利用适当命名的键盘。类型的方法。
  1. keyboard.type("this is a test")
复制代码
如上所述,pynput还可以监视鼠标移动和键盘按压。要相识有关该功能和输出的更多信息,请检察此链接。
pyautogui

大概最常见的模拟鼠标点击和键盘输入的包是pyautogui库。pyautogui实用于Windows、Linux和macOS。如果你没有安装它,你可以利用pip安装它:
  1.        
  2. pip install pyautogui
复制代码
Pyautogui也很容易利用。例如,如果你想模拟键入一串文本,只需利用typewrite方法:
  1.        
  2. pyautogui.typewrite("test pyautogui!")
复制代码
要左键单击鼠标,可以利用click方法。要右键单击,可以利用rightClick方法。
  1. # left-click
  2. pyautogui.click(100, 200)
  3. # right-click
  4. pyautogui.rightClick(100, 200)
复制代码


  • 搜索屏幕图像
pyautogui最酷的功能之一是它可以在计算机屏幕上搜索图像。这是非常有用的,如果你必要找到一个特定的按钮点击。您可以通过在locateOnScreen方法中输入图像文件名来搜索图像。该函数返回topleft坐标以及已识别图像的高度和宽度。
  1. location = pyautogui.locateOnScreen("random_image.png")
复制代码
为了得到识别图像的中心,利用中心法。然后,您可以利用click方法单击已识别图像的中心-在本例中是屏幕上的按钮。
  1. center = pyautogui.center(location)
  2. pyautogui.click(center)
复制代码
偶尔在屏幕上大概找不到图像。在这种环境下,您可以向locateOnScreen添加confidence参数,为Python提供识别图像的置信度。
  1.        
  2. pyautogui.locateOnScreen("random_image.png", confidence = 0.95)
复制代码


  • 截屏
您可以利用截图方法在pyautogui中截取屏幕截图。通报一个文件名将把屏幕截图生存到该文件。
  1. s = pyautogui.screenshot("sample_screenshot.png")
复制代码
也可以截取特定地区的截图,而不是全屏:
  1. pyautogui.screenshot(region = c(0, 0, 100, 200))
复制代码
你也可以参考上篇文章相识更多特性。
pywinauto

在Windows上,我们可以研究的另一个选项是pywinauto库。这个库的主要缺点是它不能在macOS或Linux上工作。不过,它也为Windows用户提供了一些不错的上风。首先,它的语法是面向对象的——它被设计得更加python化。其次,由于它的设计,库可以更容易地执行某些任务,如单击特定按钮或查找应用程序中的菜单项。
例如,让我们从启动记事本开始,输入一些文本,并生存文件。我们可以利用下面的代码片段来做到这一点。在这里,我们通过利用Application类启动Notepad。然后,我们引用我们刚刚打开的记事本文件“UnitledNotepad”。我们可以利用编辑。Type_keys开始输入文本。
  1. from pywinauto.application import Application
  2. app = Application(backend="uia").start("notepad.exe")
  3. app.UntitledNotepad.Edit.type_keys("Starting notepad...")
  4. app.UntitledNotepad.menu_select("File->SaveAs")
  5. sub_app=app.UntitledNotepad.child_window(title_re = "Save As")
  6. sub_app.FileNameCombo.type_keys("test_file.txt")
  7. sub_app.Save.click()
复制代码
通过检察官方文档相识更多关于pywinauto的信息。
最后总结

本文介绍了用Python实现机器人过程主动化的三个包,方便读者选择、对比学习。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表