在某些情况下,如果我们需要自动化的应用没有提供相应的接口,我们就无法通过Python直接调用API来实现自动化。在这种情况下,Python也不是完全无能为力,我们可以通过模拟键盘和鼠标来实现自动化。Python中最著名的模拟键盘和鼠标的模块有:pymouse和pykeyboard。一次安装两个模块比较麻烦,但是有一个库集成了这两个模块,可以支持跨平台运行。这个库叫做PyUserInput。通过安装PyUserInput,可以直接获取pymouse和pykeyboard。1.在开始之前,您需要确保您的计算机上已经成功安装了Python和pip。如果没有,请访问这篇文章:超级详细的Python安装指南进行安装。如果使用Python进行数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手-AnacondaWindows环境打开Cmd(开始-运行-CMD),苹果系统环境请打开Terminal(命令+空格输入Terminal),准备开始输入命令来安装依赖。当然,我更推荐你使用VSCode编辑器,将本文代码复制,在编辑器下方的终端中运行命令安装依赖模块。多么惬意的一件事:Python编程的最佳搭档——VSCode详解指南。不同系统下PyUserInput的安装需要不同的依赖:Linux-Xlib(python-xlib)Mac-Quartz,AppKitWindows-pywin32,pyHook在终端输入如下命令安装我们需要的依赖模块:pipinstallPyUserInput看到安装成功xxx表示安装成功。如果在windows系统下出现如下红色字体提示,需要安装pyHook:NomatchingdistributionfoundforpyHook(fromPyUserInput)pyHook安装比较麻烦,我告诉你,已经安装成功或者不是在Windows系统上的同学这里可以略过解释:1.安装pyHook需要到https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyhook找到你的Python版本对应的pyHook安装包。如果我的是Python3.6,系统是64位,那么选择红框版本2,输入如下命令安装whl文件:pipinstallpyHook-1.5.1-cp36-cp36m-win_amd64。whl文件需要位于输入命令的当前文件夹中。3、如果出现“SuccessfullyinstalledpyHook-1.5.1”,则安装成功。如果缺少pywin32依赖,或者pywin32无法正常使用,请到https://github.com/mhammond/pywin32/releases下载对应版本的pywin32安装包。这里的安装包是一个exe程序,直接双击安装即可。如果安装pywin32出现这样的错误(借用别人的):是因为你的Python没有写入注册表,需要将注册表写入Python,执行如下代码(Python实战宝典后台回复♂:注册表)注册成功。importsysfromwinregimport*#根据需要进行调整PythonPath"pythonpath="%s;%s\\Lib\\;%s\\DLLs\\"%(installpath,installpath,installpath)defRegisterPy():try:reg=OpenKey(HKEY_CURRENT_USER,regpath)exceptEnvironmentErrorase:尝试:reg=CreateKey(HKEY_CURRENT_USER,regpath)SetValue(reg,installkey,REG_SZ,installpath)SetValue(reg,pythonkey,REG_SZ,pythonpath)CloseKey(reg)except:print("***Unabletoregister!")returnprint("---Python",version,"isnowregistered!")returnif(QueryValue(reg,installkey)==installpathandQueryValue(reg,pythonkey)==pythonpath):CloseKey(reg)打印("===Python",version,"已经注册!")returnCloseKey(reg)print("***Unabletoregister!")print("***YouprobablyhaveanotherPythoninstallation!")if__name__=="__main__":RegisterPy()注册pywin32后可以正常安装,然后重新安装PyUserInput。macOS和Linux安装的时候应该不会遇到太多问题。如果遇到问题,可以先搜索。网上都有解决办法,或者在本文下方留言解决。2、pymouse模块的基本使用比较简单。只需要写下下面的函数就可以满足基本的使用需求,比如1.鼠标移动:#Python实用宝典frompymouseimportPyMouse#初始化鼠标对象m=PyMouse()#MoveMouseto(x,y)absoluteaddressm.move(200,200)中键滚动:#Python实用集frompymouseimportPyMouse#初始化鼠标对象m=PyMouse()#中键垂直滚动10个单位m.scroll(10,0)2.鼠标点击:#Python实战合集frompymouseimportPyMouse#初始化鼠标对象m=PyMouse()#鼠标点击(500,300),第三个参数代表按键位置,1为左键,2为右键,3为中键buttonm.click(500,300,1)mousedragging:#Python实用集frompymouseimportPyMouse#初始化鼠标对象m=PyMouse()#从当前位置拖动鼠标到(500,300)m.drag(500,300)3。获取当前屏幕尺寸:#Python实用宝典frompymouseimportPyMouse#初始化鼠标对象m=PyMouse()#当前屏幕尺寸m.screen_size()4.获取鼠标当前位置:#Python实用书frompymouseimportPyMouse#初始化鼠标对象m=PyMouse()#当前位置m.position()只要记住以上4个方法,你就掌握了pymouse模块。接下来是比较复杂的pykeyboard模块:1.键入string#Python实用宝典frompykeyboardimportPyKeyboard#初始化键盘对象k=PyKeyboard()#TypeHello,World!k.type_string('你好,世界!')2。按下键和松开键#Python实用宝典frompykeyboardimportPyKeyboard#初始化键盘对象k=PyKeyboard()#按下H键k.press_key('H')#释放H键k.release_key('H')#你也可以使用tap_key函数直接按下和释放k.tap_key('H')#支持自定义按下次数和间隔时间,单位:秒k.tap_key('l',n=2,interval=5)3.特殊键的输入:#Python实用集frompykeyboardimportPyKeyboard#初始化键盘对象k=PyKeyboard()#按住alt键k.press_key(k.alt_key)#Tab键k.tap_key(k.tab_key)#Releasealtkeyk.release_key(k.alt_key)#F5keyk.tap_key(k.function_keys[5])#Homekeyk.tap_key(k.numpad_keys['Home'])#按数字5三timesk.tap_key(k.numpad_keys[5],n=3)3.小练习微信的收藏功能还是蛮好用的。我收集了上百个链接和推送,但是官方微信没有提供批量删除的功能。.这么明显的痛点还没有解决,或许这就是微信的“任性”吧,优秀。没关系,有了Python,我们自己就可以搞定。在开始之前,需要先下载一个叫看鼠标的软件,可以找到微信中某些组件对应的当前屏幕的坐标(软件下载:mousexy)。比如红点的位置是(574,202)。所以要实现批量删除,我们只需要从这个位置开始,右击删除,然后滚动相同的宽度,重复这个操作即可。为了避免文章冗长,这里给大家做个练习。我们将在下一次推送中详细分析方法,敬请期待。这是我们文章的结尾。如果喜欢我们今天的Python实战教程,请继续关注我们。如果对您有帮助,请在下方点赞/观看。有什么问题可以在下方评论留言,我们会耐心解答!Python实战宝典不只是合集欢迎关注公众号:Python实战宝典原文来自Python实战宝典:Python模拟键盘鼠标操作实战教程
