程序员用Python实现自动化控制键盘和鼠标

要解决什么问题在我们实际工作生活中,有许多重复性的工作,比如新员工入职流程 。除了员工个人信息的不同,其他的流程应该是完全一样,因此此类工作完全可以自动化解决 。但是问题来了,有的流程需要填写Excel表格,而有些流程需要填写网页表格,这就导致可能比较复杂 。那么有没有办法,一个通用的办法来解决这些问题呢?答案是肯定有,我们用最简单的方法,通过Python来控制键盘和鼠标 。

程序员用Python实现自动化控制键盘和鼠标

文章插图
 
实现思路对于本章的内容我觉得可以帮我们几乎完成任何事情,因为我们可以通过程序来模拟键盘和鼠标的任何操作,这就意味着我们的程序可以像一个机器人一样,根据我们的指令去做任何事情 。我们对电脑的操作也就是键盘和鼠标了,因此如果可以通过程序控制键盘鼠标,那么也就意味着我们可以用程序实现任何事情 。
当然了,针对某些场景,我们仅仅能够操作鼠标和键盘,还是不能搞定 。因为键盘和鼠标仅仅是输入,我们无法获取相应输入操作的输出,比如鼠标点击了某个按钮,我们不知道这个点击操作是否被正确的响应了 。那么我们就需要去对输入操作的结果进行一些判定,比如某个按钮的操作完成后,会弹出成功或失败的提示框 。仅仅通过键盘和鼠标,我们是无法感知是否有提示框弹出,更不可能知道弹出框的内容是什么 。
【程序员用Python实现自动化控制键盘和鼠标】那么怎么解决这个问题呢?我们前面学习过PIL模块,这里我们可以通过该模块的来进行图片解析,从而确定输入执行后对应的输出是否正确 。这样,我们的程序就有一个比较完成的交互行为 。
相关模块的安装及介绍本节将会介绍本章自动化控制键盘和鼠标中会使用到的相关模块 。
pyperclip模块
pyperclip模块是一个跨平台的粘贴板模块,实现了复制和粘贴功能 。可以通过pip命令进行安装,命令如下 。
pip install pyperclip下面是一个简单的使用pyperclip模块的例子 。
>>> import pyperclip>>> pyperclip.copy('The text to be copied to the clipboard.')>>> pyperclip.paste()'The text to be copied to the clipboard.'pyautogui模块
pyautogui模块是一个面向人类的跨平台GUI自动化模块,可以用编程的方式控制键盘和鼠标,也就是给我们提供了一种通过程序来控制键盘和鼠标的方式 。通过pip命令可以进行安装,安装过程如下所示 。
PS C:Program Files (x86)Python3.6.8Scripts> pip3 install pyautoguiCollecting pyautoguiUsing cached https://files.pythonhosted.org/packages/ec/e6/4aec992002f5bdb3de852978181faa47f79dc176b5447bf9fda2b1a985c6/PyAutoGUI-0.9.47.tar.gzCollecting pymsgbox (from pyautogui)Using cached https://files.pythonhosted.org/packages/ac/e0/0ac1ac67178a71b92e46f46788ddd799bb40bff40acd60c47c50be170374/PyMsgBox-1.0.7.tar.gzCollecting PyTweening>=1.0.1 (from pyautogui)Using cached https://files.pythonhosted.org/packages/b9/f8/c32a58d6e4dff8aa5c27e907194d69f3b57e525c2e4af96f39c6e9c854d2/PyTweening-1.0.3.zipCollecting Pillow (from pyautogui)Using cached https://files.pythonhosted.org/packages/86/00/52d0e56d787c437cd5e6f39929d1ed53b37cbe01280457e29d677b86eceb/Pillow-6.1.0-cp36-cp36m-win32.whlCollecting pyscreeze>=0.1.21 (from pyautogui)Using cached https://files.pythonhosted.org/packages/51/11/878e1319ccb41dce8aaf1b6af84d5088d5f4a40fda0348e51b3d1d53f96b/PyScreeze-0.1.22.tar.gzCollecting pygetwindow>=0.0.5 (from pyautogui)Using cached https://files.pythonhosted.org/packages/a3/e1/0a96db293bbcb56dd08209f6c1275e9282385526a8900a3411d669b140ee/PyGetWindow-0.0.7.tar.gzCollecting mouseinfo (from pyautogui)Using cached https://files.pythonhosted.org/packages/bb/06/07882cebab86cae3c59a1cc99587ccb39ba29f0ba34b463d859df48a2575/MouseInfo-0.0.4.tar.gzCollecting pyrect (from pygetwindow>=0.0.5->pyautogui)Using cached https://files.pythonhosted.org/packages/2f/68/bd7bf96fc44217e769f27912e6c9bb3e9987cba286054af6120448ce8212/PyRect-0.1.4.tar.gzCollecting pyperclip (from mouseinfo->pyautogui)Using cached https://files.pythonhosted.org/packages/2d/0f/4eda562dffd085945d57c2d9a5da745cfb5228c02bc90f2c74bbac746243/pyperclip-1.7.0.tar.gzInstalling collected packages: pymsgbox, PyTweening, Pillow, pyscreeze, pyrect, pygetwindow, pyperclip, mouseinfo, pyautoguiRunning setup.py install for pymsgbox ... doneRunning setup.py install for PyTweening ... doneRunning setup.py install for pyscreeze ... doneRunning setup.py install for pyrect ... doneRunning setup.py install for pygetwindow ... doneRunning setup.py install for pyperclip ... doneRunning setup.py install for mouseinfo ... doneRunning setup.py install for pyautogui ... doneSuccessfully installed Pillow-6.1.0 PyTweening-1.0.3 mouseinfo-0.0.4 pyautogui-0.9.47 pygetwindow-0.0.7 pymsgbox-1.0.7 pyperclip-1.7.0 pyrect-0.1.4 pyscreeze-0.1.22


推荐阅读