①pywin32和pyautogui实现微信随申码自动截取并在钉钉和晓黑板上传
两个儿子,一个读小学,一个幼儿园。自从疫情缓解上课以来,根据学校的要求,每天都要上传同住人的随申码,还要填一系列的固定的信息,除了每天可能会变化的体温。我是个懒人,每天都要抱着手机截图,还要不停地填写几乎相同的东西,不仅无聊而且无趣,可是不填又不行,老师会一个一个催。
于是,想找些偷懒的方式,无外乎:
- 在手机上自动操作
- 在电脑上自动操作
- 应用程序,或者
- 网站
做决定也很容易,手机上要实现自动操作,至少需要去截其他APP的图,应该需要Root吧;电脑上自动操作,钉钉只有应用程序,晓黑板有应用程序,也有网站,可惜晓黑板的网站,登录部分都是用JS写出来的,用Selenium暂时水平不够,所以还没有找到合适的方法,于是简单一点,加上微信PC端,全部用应用程序吧。
所以,前提条件:
- 安装微信、钉钉和哓黑板的windows版本的客户端
- 准备好钉钉、哓黑板的用户名(手机号)和密码
- 微信每次都必须扫码登陆,所以设成等待手机端确认后自动登录
- 在微信中,找到‘随申办’小程序,注册好个人、还有同住人的随申码(小孩、60岁以上的人自动可以通过,否则要提供手持身份证的照片、户口本或者结婚证)
- 最后就是手动把流程走一遍,同时开一个捕捉鼠标位置的程序,把各个关键的点全部记录下来,作为默认位置。而在实际程序中,尽量使用pyautogui的screenshot的识图功能,所以每个需要做出选择点的图片(带文字)也需要截屏下来。2个整天终于把程序调好了,只要没有大的幺蛾子,每天要做的事情就是启动程序,然后在微信上确认一下登录,剩下的,程序统统自己搞定(当然,还能进一步偷懒,设个计划任务)
1
2
3
4import pywin32api
while True:
pos = win32api.GetCursorPos()
print(pos)
下面是主要的工具和包: - SPY++:这个是微软的工具,用来识别所有窗口的类名和窗口名称,使得程序可以控制这些窗口和控件
- pywin32api,pywin32con,pywin32gui的包,pip就行
- pyautogui包(不是一般得强大!!!)
程序还没有最终调整好,只适合有一定动手能力的人~