python模拟键盘和真实键盘_Python模拟鼠标和键盘操作实现重复性操作

前言

由于工作需要,要利用某软件去采集数据,做重复的动作大概500多次。所以想写一个程序代替人,去点击和输入。

一开始的思路有两个:1、用Python或者windows对此软件直接操作。2、利用Python模拟鼠标和键盘操作,模拟人工去操作此软件。

第一种想法比较难实现,因为首先是没有此软件的接口,没办法进入它的后台。其次是Python没有这样的功能库。

第二种想法容易实现,但是有一个问题,是Python没办法接收软件的反馈,并作出判断,只能按照既定的鼠标和键盘设置进行操作。

准备工具

“看鼠标”软件

Python的PyUserInput库(它的依赖库有pyhook,pyhook的依赖库为pywin32)

如果是在anaconda里面安装pyhook的话,有可能还需要安装个msgpack

实施

采集工具如下图:

需要对它的界面点击和输入:“单位列表”→输入单位编号→回车→“数据采集”(等待5-10秒)→“上一步”

然后循环这个操作

点击的位置基本都是不变的,也不需要做判断,所以用pymouse和pykeyboard来操作比较方便。

由于pymouse需要填写鼠标的X,Y定位,所以需要利用一个叫“看鼠标”的小软件去实行。

from pymouse importPyMouseimporttimefrom pykeyboard importPyKeyboarddefdel_all():"""清空文本框"""k.press_key(k.control_key)

k.tap_key('A')

k.release_key(k.control_key)

k.tap_key(k.delete_key)defclick_and_type(word):

time.sleep(0.5)

m.click(536, 531, 1)#点击“单位列表”

time.sleep(0.5)

del_all()

k.type_string(word)#输入单位编码

time.sleep(1)

k.tap_key(k.entry_key,1)#等它感应到对应单位后回车

time.sleep(0.5)

m.click(1121, 732, 1)#点击“数据采集”

time.sleep(10)#等待数据采集完毕,一般3秒左右完成,但需要预留多一点时间确保

m.click(1119,738,1)#点击“上一步”

#主体执行部分

list_num=['A1002002','B213212']#实际执行过程中有500多个单位,这里只展示两个

m=PyMouse()

k=PyKeyboard()

m.click(1600, 900, 1)#显示桌面

time.sleep(0.5)

m.click(324, 872, 1)#显示软件

for i inrange(len(list_num)):

word=list_num[i]

click_and_type(word)

然后程序就自动化的执行起来。在这类小程序的测试阶段,最好将脚本备份一下,将无关程序关闭。因为当你操作的小程序有意外情况时,你在强行停止程序的过程中有可能影响到脚本。

附言

在模拟的鼠标和键盘的时候,总是无法对程序的反馈做一个感应和判断。譬如操作的程序弹出一个对话框,Python模拟鼠标键盘的程序也只能继续跑下去。

虽然暂时没有办法感应到窗口,但是可以利用win32con和win32clipboard两个库,读取到windows的剪切板,从而对软件的文本进行一个读取。这个也算是

一个交互的方式。下面将相关的脚本奉上,供大家参考。

importwin32conimportwin32clipboard as wdefget_text():"""读取剪切板"""w.OpenClipboard()

t=w.GetClipboardData(win32con.CF_TEXT)

w.CloseClipboard()

a= t.decode('ANSI')#部分文本需要这个解码,显示中文

return a

good luck!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值