记得上初中的那会儿,玩过一个叫作 DNF 的游戏。

如果你选的角色和我一样,都是神枪手,那么你大概记得,光是要开枪普攻就要不停地按X键,按一下打一发子弹。

为此大家都会去网上下一个自动连点的小工具,有了这个小工具,只需长按X,就能自动实现连击,堪称完美。如今每当回想起来,再看看自己从事的行业,都觉得甚是有趣..

说了这么多,当然和今天的话题有关,如果我们自己来实现这样一个自动连点的工具,又应该怎么做呢?

关于自动化,在前面两篇文章里,我们已经介绍了 bat 脚本和 selenium 框架,但似乎并不能很好的解决上面的问题。

事实上,我们需要再引入一个新的 python 框架,它就是pyAutoGUI,有了它,我们就可以实现对电脑桌面的自动化操作。

  快速入门  

pyAutoGUI 与浏览器页面自动化操作类似,桌面自动化操作也是需要定位鼠标在桌面的位置,然后根据定位的位置执行对应的操作。

至于具体的基础教程我就不再这里多讲了,动一动小手指,你就可以在网上搜到很多与之相关的文章~ 比如说下面这个:

www.cppcns.com/jiaoben/python/476469.html

关于pyAutoGUI,我认为它最强大的一点就是桌面定位功能,具体包含了截图识别,根据参考图片找到我们的要定位的元素,甚至还能调整识别可信度,这无疑是史诗功能。

不必要去急着看我给出的教程链接,在接下来的实战案例里,我会使用注释标上具体的功能,后面再针对性的看教程即可。我始终认为,这种脚本方法,用到时去查即可。

实战案例

假设前提

  • 某客服公司老板发现有一些员工经常很晚下班,原因是处理客户需求,觉得他们非常敬业,想对他们进行奖励。。

  • 但是公司系统只能查到员工的下班时间,不能准确的定位员工是真是加班还是摸鱼加班。

  • 老板想让你定时拿到员工的加班情况,并发企业微信给他,同时做好数据备份。发给老板的一份是供老板实时参考,保存的数据是供月底奖励时的统计汇总。

  • 公司系统中有一个在线用户模块,可以实时监测到当前在线的员工。当然在线的判断是根据呼叫中心的心跳来检测的,当你在正常进行客户需求处理时,才会显示在线,否则在线列表无显示。

现在,你是选择定个闹钟,每30分钟去看一次员工在线情况,还是写一个脚本定时的监控和记录,

然后在家悠闲的打王者荣耀呢?

那当然选后者啦!

解决思路

Step 1:分析下系统长什么样子

Step 2:分析下接口长什么样子

Step 3:思路

由图可知,在线用户采用的是一次请求,返回所有的在线用户,然后交给前端进行分页。

因此,我们只需保证我们登着企业微信,并间隔一段时间去请求该页面数据,然后自动进行处理,给领导发一份,给数据库存一份即可。

Step 4:说干就干,上代码

import datetimeimport jsonfrom time import sleepimport pyautoguiimport pyperclipimport requestsimport pymysqlurl = ‘http://101.xxx.xxx.185:90/api/user_online/list_all’headers = {‘token’: ‘eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhxxxxxxxxxx3MzQyMCJ9.jx93ff7lc_68EfFeosc0mzPPWXq_yc2bbWjEiC6tyHU’}def save_db():# 记录数据库conn = pymysql.connect(host=‘localhost’,user=‘root’,password=‘123456’,database=‘DB’)cursor = conn.cursor()sql = “INSERT INTO online(create_time, users) VALUES (%s, %s)”dt = datetime.datetime.now().strftime(“%Y-%m-%d %H:%M:%S”)cursor.execute(sql, (dt, str(users)))cursor.close()conn.commit()conn.close()def send_boss():# 根据提供的图片找到企业微信图标,定位中心,点击弹出企业微信主页面wx = pyautogui.locateOnScreen(‘D:/wx.png’)x1, y1 = pyautogui.center(wx)pyautogui.click(x1, y1)sleep(1)# 模拟按下 ctrl+fpyautogui.hotkey(‘ctrl’, ‘f’)sleep(1)# 模拟按下 ctrl+c 复制 ‘谷子毅’pyperclip.copy(‘谷子毅’)# 模拟按下 ctrl+v 粘贴 ‘谷子毅’pyautogui.hotkey(‘ctrl’, ‘v’)sleep(1)# 模拟按下 回车 定位到聊天框口pyautogui.hotkey(‘enter’)sleep(1)# 模拟按下 ctrl+c 复制 users转化的字符串内容pyperclip.copy(str(users))# 模拟按下 ctrl+v 粘贴 users转化的字符串内容pyautogui.hotkey(‘ctrl’, ‘v’)sleep(1)# 模拟按下 回车发送消息pyautogui.hotkey(‘enter’)# 模拟按下 alt+f4关闭窗口pyautogui.hotkey(‘alt’, ‘f4’)# 把鼠标从企业微信上挪走,防止下一次鼠标挡住图标导致无法识别pyautogui.moveTo(100, 100)# 脚本从这里开始执行while True:# 使用requests 获取请求结果result = requests.get(url, headers=headers)# 获取请求结果正文result = result.text# 解析json转对象result = json.loads(result)# 获取data数据data = result[‘data’]# 遍历结果,记录当前在线用户到 list  users = []  for user in data:      users.append(user['realName'])  # 给老板发消息  send_boss()  # 保存数据库,我本地没下载数据库,哈哈哈,可以自己尝试  # save_db()  print('本次发送结束!')  # 每30分钟发送一次  # sleep(30 * 60)  # 测试时,每1秒发送一次  sleep(1)

 代码详解 

其实代码本身并没有什么难度,只是一个思路罢了,现在对其中几个小问题做下解析。

#1

D:/wx.png`图标是什么?

D 盘下的图标就是拿截图软件对企业微信的一个截图。

#2

因为 pyAutoGUI 不能直接输入中文,所以需要 pyperclip 库的帮助,通过复制粘贴的方法来输入中文。

  说在最后  

通过这几章的学习,我们基本上玩转了利用各种脚本实现的自动化操作,已经能基本具备解决各种生产生活中的自动化问题了。

学了这么多,自己去试试吧,冲冲冲!

最后再次强调,思路!思路!思路!思路最重要! 

Why code?This may an answer ~

解决生活中真实遇到的问题,而不是为了编码而编码,这或许才是我们应该反思的!

基地树洞 | 自动化小系列之整合篇相关推荐

  1. 基地树洞 |如何用selenium解决生活中的烦恼?

    目录 一.快速入门 二.实战案例 三.说在最后 大家期待已久的自动化小系列之浏览器篇来啦! 在开始今天的文章前,我想问问大家,在日常工作生活中,不知你有没有碰到以下一些问题呢: 周五下班回家了,结果忘 ...

  2. 多陪陪聊/大橘树洞/夏日小野猫/糖恋树洞/听花开树洞/花语树洞/灯色阑珊处/橘色灯罩/暖聊小镇 陪聊陪玩公众号开发 未加密源代码

    源码介绍 公司自主开发,源码未加密带注释,可直接搭建使用,前端使用的是vue2.0后端使用php7.2,带公众号模板消息推送,源码带注释未加密 结构清晰合理支持二次开发. 演示公中号:花纹猫 界面截图

  3. 快速上手JVM系列(整合篇)

    JDK版本:jdk-11.0.7,文中所有代码都在JDK11环境下运行成功 虚拟机版本:Java HotSpot(TM) 64-Bit Server VM 18.9 学习过程中主要参考资料 [1] 深 ...

  4. ChatGPT 自动化办公系列教程 - 提问篇:协助制作 PPT

    除了Word 和 Excel 外,PPT 也是职场打工人的必备技能. 以往很多职位都会花费大量的时间来制作 PPT ,他们会在文案,设计,甚至动画上花费大量的心思. 但结果往往还是做不出来美观的 PP ...

  5. 年轻人,如何抗造系列之 - 感恩,树洞及放空

    年轻人,如何抗造系列之 - 无意义的忧虑与烦恼 年轻人,如何才能抗造之 - 预期管理及心态控制 第二篇的访问量没有达到预期,这种标题可能确实很难形成传播,但我相信,放两年,三年,回头来看,这种文章不会 ...

  6. 微信小程序云开发-树洞小程序Treehole(介绍)

    记录一款基于云开发的微信小程序. 树洞,顾名思义是作为匿名吐槽的平台,主要功能可以参照微信朋友圈的形式,不过采取的是匿名的方式. 主要基于微信小程序云开发,前端个人主页页面的界面使用的是ColorUi ...

  7. springboot工科树洞网站的设计与实现 计算机毕设源码48510

    摘  要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理.在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设工科树 ...

  8. 在树洞里,渝粤题库在线整理

    在树洞里 在树洞里,我看到了一些领国家助学金的同学大手大脚,也看到了一些同学好像并不困难,我更看到了许多拿了学校的奖励,可是连写感谢信都不愿意写,觉得很麻烦的同学.我想把我的故事讲给你们听. 我来自单 ...

  9. 树洞OCR文字识别v1.1.0官方版

    树洞OCR文字识别是一款跨平台文字识别小工具,使用了各云平台开发的识别接口,因此需要联网才能正常使用,可以在程序主界面点击截图按钮,也可以点击截图快捷键F4! 使用方法: 启动截图 方法一:在程序主界 ...

最新文章

  1. HM16.0之帧间预测——xCheckRDCostInter()函数
  2. 后台返回的数据换行显示
  3. 实变函数与泛函分析导论
  4. 今天开通了自己的博客
  5. 【C#程序设计】教学讲义——第一章:C#语言概述
  6. 布尔表达式的语法及语义分析程序_XSS语义分析的阶段性总结(一)
  7. bem什么意思_bem是什么意思_bem的翻译_音标_读音_用法_例句_爱词霸在线词典
  8. 线条边框简笔画图片大全_超治愈萌系手帐素材大全 美食旅游花草人物花边都备齐了...
  9. 妲己机器人需要什么条件才能使用_estar零封YTG:平头哥快乐电竞,只有妲己没亚瑟,差评...
  10. CentOS7.4搭建FTP服务器(vsftp)
  11. 使用SniperPhish进行电子邮件钓鱼
  12. 2019年下半年程序员考试上午真题自我汇总
  13. 物联网设计之智慧幼儿园(一)
  14. 闪迪u盘量产工具U盘正常显示但是多出几个空分区的解决方案
  15. CHUA 返回的矢量的长度为 3,但初始条件矢量的长度为 4。CHUA 返回的矢量和初始条件矢量的元素数目必须相同。
  16. AT-GAN: A Generative Attack Model for Adversarial Transferring on Generative Adversarial Nets
  17. 十个要点让你的渲染更好
  18. 摄像头Optical Center检测算法简单实现
  19. 32位汇编语言学习笔记(43)-- 生成随机数
  20. Python 学习笔记——入门

热门文章

  1. ISO15189医学实验室认可内审员培训
  2. Consul入门05 - 健康检测 1
  3. java将office文档pdf文档转换成swf文件在线预览
  4. win10 smb共享硬盘
  5. 计算机模拟技术在后处理中的应用,火灾模拟论文,关于计算机模拟技术在防火设计中的应用相关参考文献资料-免费论文范文...
  6. abb机器人焊接编程视频教程_ABB工业机器人焊接编程程序详细介绍
  7. 四大CPU体系结构:ARM、X86/Atom、MIPS、PowerPC
  8. DOS DDOS DRDOS原理
  9. 解决Module not found: Error: Can‘t resolve ‘sass-loader‘ in ‘******‘和node-sass和sass-loader版本不兼容问题
  10. gitee的使用笔记