①pywin32和pyautogui实现微信随申码自动截取并在钉钉和晓黑板上传

两个儿子,一个读小学,一个幼儿园。自从疫情缓解上课以来,根据学校的要求,每天都要上传同住人的随申码,还要填一系列的固定的信息,除了每天可能会变化的体温。我是个懒人,每天都要抱着手机截图,还要不停地填写几乎相同的东西,不仅无聊而且无趣,可是不填又不行,老师会一个一个催。

于是,想找些偷懒的方式,无外乎:

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