日常办公会用到的python模块-Python如何去实际提高工作的效率?也许这个会有用!...-程序员宅基地

4月初,班主任的某次周会议上,华华关切的问了一下:最近班主任们有什么难题吗?就是花费了你们大部分时间的工作!我们Python天团可以帮你们解决问题。

班主任大主管星星说:有。目前有一个大难题。我们每天都会对进群的学员登记他的真实姓名,联系方式,地址,目前薪资,期望薪资以及为什么会选择柠檬班~然后对于所有学生的缴费情况都会去腾讯进行查验,确保学生有上课的权限,并且每次会提前提醒分期的同学按时缴纳分期费用,防止逾期而没有上课的权限。

华华:这不是so easy的事情吗?

星星:不easy,首先学生并不是一天来的,而是每天不同的班级都会有不同的学员入学,那么就要分类整理。第二:每个学生的缴费信息方式不一样,有的是分期,有的是全款,有的是微信账号购买课程,所以为了把入群的qq和这些学费信息核对起来,真的是非常的困难!

华华:这好办,我帮你搞定(当然那是不可能的),会后找到了Python天团的主管:小简大佬。小简大佬,班主任团队最近遇到了一个比较繁琐的问题,就是统计学生的信息比较费时,可以帮忙用自动化搞定吗?

简佬(小简大佬的简称):好的呀,有需求吗?我们团队的可优和雨泽可以帮忙做这个事情,你把需求搞定,我们最迟一周内交付,毕竟我们还有自动化测试和测试开发以及公开课的任务在身。 有Python天团的强有力支撑,那么就可以开始行动了!

PART 1:整理需求

于是:华华联合星星,疏导了班主任的工作流程以及数据来源,整理出了一份需求。(各位亲爱的VIP学员们,你们的服务都来自于班主任的不辞劳苦!)

关于学员信息统计:

包含了如下图所示的一些信息

ab018143-ec00-468c-840e-f87d15c1fa03.png!large

其中QQ来自QQ群,微信订单来自柠檬班内部的CRM系统,剩余的信息来自柠檬班的学员信息管理后台(由学员在柠檬班提供的表单上自行填写),经过几轮分析,确定数据来自这3个不同的地方。

关于学生缴费信息统计:(这关系到学员是否有上课权限,是否会错过上课时间,非常重要!)

但是这个信息会有2个问题: 1)如果学生是QQ报名的,那么可以直接根据QQ去统计信息。

2)如果学生是微信报名的,那么需要根据加入班级群的QQ去CRM系统里面找到对应的微信号,然后进行QQ微信匹配后再去腾讯课堂查询,比如说Python17群学员的QQ是:1248***816(保护学生隐私,匿了中间三位数),是通过微信报名的,那么在CRM系统里面的微信账号是:144115213097282684,我们在腾讯课堂后台只能通过这个微信号才能唯一查询到支付信息,如下所示:

8a6b29c9-b948-4403-bce7-6b86762c6146.png!large

3)如果学生是分期的,那么还要点击到分期的详情页去查看,分期的支付状态并登记好之后几期分期的支付时间,好定期对学员进行提醒,以免逾期。比如说Python17期某位学员的QQ是:792***306,那么查询到分期订单如下所示:

c9551f01-56de-4a3c-85f0-d5bbb05bd331.png!large

我们需要点击"分期明细”,进入到分期的详情页里面去,才能看到学生的明确支付信息以及每一期的最后支付时间,如下所示:

041f1985-7e46-4d34-97cc-f8922132c7ee.png!large

PART 2:编写脚本

需求整理完毕后,图文并茂的交给了简佬,当然part1部分的是简单的描述,尽量让大家可以看的明白点,比较复杂的就不写出来了! 简佬就开始分发任务:可优大佬负责学生缴费信息的统计脚本,雨泽大佬负责学员信息统计脚本,至于具体的实现过程,当然要跟大家分享一下!由华华来进行文字整理,因为华华在这个过程中充当了班主任和Python天团的桥梁和需求整理者。

关于学员信息统计的脚本实现方式:

1:首先从对应班集体的QQ群里导出学员的Q信息 2:然后从柠檬班内部的CRM系统里面导出学员的订单信息 3:两部分信息都保存至xlsx的文件里面,然后利用Python的openpyxl第三方库对两份数据进行比对,对学员是微信报名的信息与QQ进行匹配,最后完成的第一步效果如下所示:

5a86b518-6359-4a4c-a930-52f31cf0297f.png!large

4:然后根据学员的QQ信息,利用Python的Python-mysql-connector第三方库进行数据库查询,获取到学员的详细信息,如下所示:

5b6ce4e3-f2f8-4b9b-bc7a-7ff62254db1c.png!large

脚本的话~~也截图小小的看看,部分代码,并不完整哦!学完柠檬班的Python自动化,你也可以!

c5fcf4f7-18cf-4fcc-958e-2b0b39581c32.png!large

916694c6-e698-4992-a240-18af2e9a7f05.png!large

关于学员缴费信息统计的脚本实现方式:

1:利用学生信息统计的结果进行查询,如果QQ查询不到,就用QQ对应的微信号去进行查询

2:如果是全款,那么就直接登记信息,如果是分期,就登记分期链接,后期再单独进行分期详细信息的统计与登记。

3:以上两步是非常清晰的,实现方式无外乎就是web页面元素的定位,方式有多种,xpath css或id,但是这个脚本,有两个亮点要跟大家分享下,希望大家以后遇到这个问题也可以用类似的方法去处理。

亮点一:查询之前先固定查询的条件

c27c1417-970f-4697-a48a-fa657bd3f330.png!large

这里有两个显式的条件需要固定,一个是时间,我们只查询2019年1月1号开始的订单,那么这里就设计到日历的固定于选择:

页面的HTML源码如下所示:

6dc2e7df-4b36-4e77-b6bd-560874e69fd4.png!large

我们可优大佬实现的方式是:

158dd2d4-85ea-47e1-94e2-350642de5516.png!large

另外一个需要固定的条件是:课程包名称,这个是非selected控件,经过观察是支持模糊查询,并且需要从模糊查询的结果里面选择对应的下拉元素才可以生效的! 页面的HTML源码如下所示:

5301c1d1-bd88-4a1a-85c8-38f3162da0e8.png!large

我们可优大佬实现的步骤是:先输入查询的课程条件(尽量可以唯一确定到唯一一个元素,然后选择下拉框的第一个元素,第0个元素显示的是"”全部"”),比如我们输入的是:python全栈自动化测试工程师第7-19期,那么下拉框就会显示可以选择的课程包名称,实现代码如下:

ba0fe862-20da-4af7-a8b1-4f1089138c47.png!large

效果如下所示:

46f71c12-7ea9-40aa-ab9a-36020d0eb64c.png!large

我们通过代码选择下拉列表的第一个元素,然后神奇的事情就发生啦!后面出现了隐藏元素,班级!

如下所示:

8f8d7c80-560b-48a7-a443-6521d10efeb8.png!large

那么接下来就是选择班级,但是我们的查询班级下拉框也是非selected的,而且不支持输入只能从下拉元素中选择,页面的HTML源码如下所示:

a01dc893-6f3a-40bb-9c81-67be9e567d13.png!large

我们实现的代码如下所示:

49d85554-9f2e-4bcc-a3e2-a1c1b3e981a5.png!large

至此查询的难题已经全部实现,除了这里有点浪费时间,其他的都非常简单!

亮点二:利用正则匹配分期的数据

学习自动化,不仅仅要学习Python编程能力还需要学习其他的知识,比如说正则!而且这些在柠檬班自动化的授课里面全都有!这里截取部分代码,仅供参阅!

f5af7f56-dd09-4095-868d-89ec261d7fe7.png!large

这个过程从构思到实现,都是在工作日时间实现的,5月1号,此项目正式上线!并且已经部署到班主任专用的电脑上的jenkins上!这样可以定时的去跑任务啦!班主任也可以开始利用Python来武装自己了!这个年代,不学点自动化,都不好意思说自己是Python班的班主任啦!

如果最近你发现班主任们变美了,心情也美美哒,每天跟你说话都是元气满满的,那么一定是因为Python给他们工作减负,他们多了时间化妆和休息!

有兴趣的同学可以多多关注柠檬班的Python自动化课程,可以找专业的Python自动化辅导员来领取专业的学习资料! 柠檬班等你很久了,特意为你准备了一波自动化测试秘籍,助你突破薪资技能瓶颈!

包括 Jmeter、Python编程、Selenium、unittest+Http技术+ddt;appium自动化;还有自动化面试题,以及项目案例分享。有兴趣的可以加我哦,免费送!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_37988176/article/details/109411102

智能推荐

潘石屹成功大撤退-程序员宅基地

文章浏览阅读168次。来源丨市界作者丨黄莹编辑丨胡刘继子弹飞了那么久,终于落了下来。6月16日晚间,SOHO中国发布公告称,黑石集团发出全面收购要约,投资SOHO中国有限公司,以取得其控制权。黑石计划以每股5港...

mysql官方手册_mysql官网手册-程序员宅基地

文章浏览阅读713次。可切换mysql手册版本mysql8.0官方手册_mysql官网手册

《数字系统设计与VHDL》课程实验报告_数字电路vhdl语言初步实验报告-程序员宅基地

文章浏览阅读3.9k次,点赞4次,收藏13次。一.实验目的1.学习并使用VHDL语言对相应简单数字系统进行设计,基本掌握数字系统EDA技术以初步或者更深层次的掌握硬件描述语言VHDL。2根据老师下凡大作业的实验包,选择相应的实验进行学习与设计,完成项目的组织和VHDL代码的设计。并采用QuartusII进行相关仿真并且平台实现。3. 在完成项目的布局和VHDL代码的书写及相应的QuartusII仿真之后利用老师所给的电路板将相应的编程下载至..._数字电路vhdl语言初步实验报告

阿里p8架构师分享:Java经典基础与高级面试36题和答案(下)_阿里p8面试题和答案-程序员宅基地

文章浏览阅读370次。19.为什么集合类没有实现Cloneable和Serializable接口?克隆(cloning)或者是序列化(serialization)的语义和含义是跟具体的实现相关的。因此,应该由集合类的具体实现来决定如何被克隆或者是序列化。20.什么是迭代器(Iterator)?Iterator接口提供了很多对集合元素进行迭代的方法。每一个集合类都包含了可以返回迭代器实例的迭代方法。迭代器..._阿里p8面试题和答案

7.8函数 1_7.8变成7用什么函数-程序员宅基地

文章浏览阅读353次。7.8.1 C语言变参函数int_7.8变成7用什么函数

【工作】python识别不同国家语言类型_langid识别出的tl是什么语种-程序员宅基地

文章浏览阅读6.6k次,点赞4次,收藏15次。优秀文章推荐:地址:Python使用谷歌langdetect检测语言地址:Python3:语言探测工具langdetect和langid支持的语言类型:支持检测55种语言: af, ar, bg, bn, ca, cs, cy, da, de, el, en, es, et, fa, fi, fr, gu, he, hi, hr, hu, id, it, ja, kn, ko..._langid识别出的tl是什么语种

随便推点

Access restriction: The type 'JPEGImageEncoder' is not API (restriction on required library 'C:\Prog_forbidden reference 能设置为waring-程序员宅基地

文章浏览阅读962次。把项目中的这个Forbidden reference 设置为Warning,就可以了_forbidden reference 能设置为waring

MySQL基础教程17-Mysql数据类型-日期时间_mysql中2017年后怎么表示-程序员宅基地

文章浏览阅读845次。本篇来简单学习下Mysql中的时间日期数据类型,这个类型使用频率不是很多,主要是在记录时间上,例如一个用户表,可能需要记录用户注册时间,用户最近一次登录时间,还有用户的一些会员时间期限。时间日期类型分类Datetime: 时间日期,格式是YYYY-mm-ddHH:ii:ss,表示的范围是从1000到9999年,有0值,也就是有0000-00-00 00:00:00Date:_mysql中2017年后怎么表示

spark mllib ALS电影推荐_spark mllib als 电影推荐-程序员宅基地

文章浏览阅读797次。package zqr.com;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import ..._spark mllib als 电影推荐

java第八节笔记-程序员宅基地

文章浏览阅读358次。第八节一、instanceof 实例判断,用来判断有没有此类的类型equals 比较对象一般判断步骤1.先判断内存是否一致,2.判断是否是此类3.判断各属性是否相等。克隆:clone() 如:直接new一个对象,将属性值赋予它。Final 常量关键字。 1.修饰变量变量是常量 2.修饰属性上属性是常量 3.修饰方法上方法不可重写,修饰在类

51 Proteus仿真频率计速度计超速报警数码管显示MAX7219-0001_proteus频率计怎么用-程序员宅基地

文章浏览阅读678次。51 Proteus仿真频率计速度计超速报警数码管显示MAX7219-0001硬件组成:51单片机 +8位数码管+MAX7219数码管驱动模块++多个按键+LED灯+蜂鸣器1.准确测量信号发生器输出的方波频率信号(速度)(0~10KHz),然后显示在数码管上面。2.可以通过按键设定报警频率(速度),当速度超过设定报警值后,蜂鸣器器报警并且LED灯亮。3.有4个按键分别是:速度设置、增大、减小、确定。点击速度设置键可以进入速度设置模式。_proteus频率计怎么用

Anypoint Studio配置runtimes_studio-runtimes-程序员宅基地

文章浏览阅读3.1k次,点赞2次,收藏3次。Anypoint Studio配置runtimesAnyPoint Studio这个工具属于基于eclipse的集成工具。该工具是是免费的,但是运行环境是分为社区版和企业版的,企业版的是收费的,免费30天使用。查看自己的软件版本和自带的runtimes版本。v7.2.1只支持mule4.1以上的版本。Anypoint Studio默认自带的runtimes都是企业版的。适用时间为一个月..._studio-runtimes