0 声明(本着学习的态度进行了以下开发)

“关于自动健康打卡运行程序,放在下面了,里面涉及到技术内容很少,其中就是包含一个自动化程序的调用和HTML中element的定位。声明:本程序和经验仅供技术交流使用,任何人不得将其用于非法用途;同时,软件属于测试版本,自己还需多多留意,除技术问题,本人不对其他问题进行解释和负责。”——一份来自开发程序猿的声明

// An highlighted block
# -*- coding: utf-8 -*-
"""
Created on Sun Jan 10 19:12:33 2021
@author: zhiyang
"""
# =============================================================================
# 运行前准备
# 1.准备一个浏览器,Chrome,或者FireFox,本程序以Chrome为例
# 2.在网上下载相应版本的浏览器驱动Chromedriver,并放在Chrome相同的文件夹下
# 3.将Chromedriver的路径添加至计算机用户变量Path中
# 4.python中需要导入指定库selenium(自动化测试框架)、json(采用config.json配置文件导入用户信息时用到)、time(计时器
# 5.在用户数据处填写自己的信息
# =============================================================================from selenium import webdriver
import time
import json
import yagmail#1 健康上报用户数据
#1.1 本人学号
#1.2 健康系统密码
#1.3 健康上报网址
uid='**********'
upw='*******'
url='https://jksb.v.zzu.edu.cn/vls6sss/zzujksb.dll/first0?fun2=a'#2 开启浏览器
def openChrome():#可以设置无头浏览器,不弹出浏览器,后台运行option=webdriver.ChromeOptions()option.add_argument('disable-infobars')option.add_argument("--headerless")driver=webdriver.Chrome(options=option)return driverdef operate_jksb(driver):driver.get(url)time.sleep(1)#加载网址之后,等待1selem_user=driver.find_element_by_name('uid')elem_user.send_keys(uid)#传入账号elem_password=driver.find_element_by_name('upw')elem_password.send_keys(upw)#传入密码#自动登录进入系统login=driver.find_element_by_name('smbtn')login.click()#page1页面信息提交driver.switch_to_frame('zzj_top_6s')#切换浏览器的作用域page1_button=driver.find_element_by_xpath('//*[@id="bak_0"]/div[13]/div[5]/div[4]')page1_button.click()time.sleep(1)driver.switch_to_default_content()#切换回默认作用域#page2页面信息提交-点击提交表格driver.switch_to_frame('zzj_top_6s')#切换浏览器的作用域#page2_button=driver.find_element_by_xpath('//*[@id="bak_0"]/div[11]/div[4]')版本一的提交按钮位置page2_button=driver.find_element_by_xpath('//*[@id="bak_0"]/div[7]/div[2]/div[2]/div[6]/div[4]')page2_button.click()driver.switch_to_default_content()#切换回默认作用域#page3确认上报弹窗driver.switch_to_frame('zzj_top_6s')#切换浏览器的作用域page3_button=driver.find_element_by_xpath('//*[@id="bak_0"]/div[2]/div[2]/div[4]/div[2]')page3_button.click()driver.switch_to_default_content()#切换回默认作用域#退出浏览器driver.quit()print("自动填报完成!")#3 打卡通知的Email用户
SB="********@**.com"
def EmailToSB(sb):# 1、准备用于发送邮件的邮箱,此处password是邮箱的授权码username = "********163.com"password = "***********"# 2、创建SMTP对象yag = yagmail.SMTP(user=username, password=password, host="smtp.163.com")# 3、准备要发送的内容content = ["已完成健康上报!"]# 4、发送邮件yag.send(to=sb, subject="测试邮件", contents=content)# 5、关闭连接yag.close()#4 主函数
if __name__ == '__main__':driver=openChrome()operate_jksb(driver)EmailToSB(SB)

1 首先安装Chrome浏览器

1.1 方法一(自己动手丰衣足食)

利用任意一款浏览器(360、Microsoft Edge、FireFox)自行从网上下载进行安装,建议使用goole搜索提供的(需要科学上网),国内一些网站也有提供,但是注意甄别一些假冒的软件。

1.2 方法二(不劳而获简单便捷)

文件夹中我已经给出Chrome的安装程序,双击点击安装(谷歌提供的在线安装服务)

因为程序里面自动化测试框架选用的是Chrome,如果你有需求可以看对应源码更改响应浏览器,如FireFox。

2 配置浏览器驱动程序及路径

如果你在上面采用的是方法一,具体如下面步骤1-2。如果采用方法二,直接跳到步骤3。

2.1 步骤1

请通过浏览器【帮助】-【关于google Chrome】查看浏览器版本,下载相应版本的Chromedriver。

【传送门1】驱动源地址

【传送门2】 镜像地址

2.2 步骤2

根据自己的浏览器版本下载对应的驱动,是一个压缩包,根据上面chrome 87.0.4280.141,应采用87.0.4280.88,有其他版本的下载相应的chromedriver即可。

将下载的压缩包解压,得到一个chromedriver文件。

2.3 步骤3

(1)然后右键单击桌面的谷歌浏览器图标,选在【打开文件所在的位置】,将刚才chromedriver文件复制进来。

(2)复制该文件路径,如下图;

(3)将路径添加至计算机用户变量path中,如下图;
操作:打开【我的电脑】-【计算机】-【属性】

出现“系统”对话框,点击【高级系统设置】-【环境变量】-‘用户变量’【编辑】

将刚才复制的路径粘贴到最后,注意要与前面一个路径用英文分号隔开,如下图:

点击【确定】-‘环境变量’【确定】,关闭其他对话框,重启电脑(也可以不用重启,有时候路径加载不被认可)。

3 构建自己的提醒邮箱

用记事本打开“健康打卡.cfg”文件,根据提示填写自己登录信息。

提醒邮箱的设置,以163为例,qq邮箱同理:
登录163邮箱,点击【设置】-【POP3/SMTP/IMAP】


点击开启之后得到授权码,妥善保存,如下图所示:

复制此授权码,填写至指定位置:

待发送的邮箱地址,就是谁可以接到你的打卡成功通知:

(1)你可以写与上面相同的邮箱,手机上使用邮箱app登录相同的邮箱来接收通知是否打卡成功;
(2)你可以写自己的qq邮箱,利用手机qq可以来接收通知是否打卡成功;
(3)你可以写你对象的邮箱,每天向Ta报备你的健康(本single dog觉得此功能多余);
(4)你可以写你老师的邮箱,每天一封向他汇报健康打卡情况(此建议纯属开玩笑,如有人当真,后果自负!)。

检查自己的账户信息和邮箱信息,保存.cfg文件。(注:要保证.cfg和.exe文件在同一个文件夹下)
此时,运行准备已经完成,可以双击.exe文件执行打卡操作。

4 启用Windows定时任务,实现自动打卡

点击windows搜索(电脑左下角的放大镜)“计算机管理”,在任务计划程序库中可查看正在准备的程序。

点击【创建基本任务】,填写名称(必填)和描述(非必填),点击【下一步】

任务触发器,选择【每天】,点击【下一步】

开始时间,根据自己习惯进行设定,应确保在电脑开启的时间段内,点击【下一步】

选择【启动程序】,点击【下一步】

点击【浏览】,选择EXE文件;随后,将程序路径去掉“\程序名.exe”复制粘贴放到起始于中,<以下图为例子,【起始于】中应填写<“C:\Users\57102\Desktop\健康打卡_v1\健康打卡_v1”>

点击【下一步】

点击【完成】,创建任务完成。

在【任务计划程序库】中查看自己的任务是否准备就绪。
关闭【计算机管理】。

到此,完成全部操作,可以让电脑代替自己定时进行上报打卡了~
如有更好的建议,或者在测试过程中遇到问题的,请及时与我联系,QQ:571023600。

问题反馈日志:
2021年1月13日
问题描述:有同学将自动打卡程序定时启动时间设置为每天的0:02,但是出现了打卡异常情况;
问题原因:可能是打卡系统的服务器时间与我们本地计算机时间存在差异,系统服务器时间比本地计算机时间提前两分钟,如果设置0:02的话,很容易与系统更新时间发生冲突,导致打卡失败;
解决方法:避免两分钟的时间差,将自动启动时间更改到每天0:02分之后,即可避免出错。

【编程实践】每日JK打卡程序操作说明相关推荐

  1. python编程实践-简单淘宝秒杀程序

    python+selenium实现淘宝商品秒杀(新手上路,轻点喷.2020.7.23) 抢购鞋子,发现那些人下手太快,于是有了自己写一个抢购代码的想法,经过几个小时的折腾,算是拼凑出一个简单的抢购程序 ...

  2. 基于微信小程序的每日签到打卡

    社会的发展和科学技术的进步,互联网技术越来越受欢迎.手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用.手机具有便利性,速度快,效率高,成本低等优点. 因此,构建符合自己要求的操作系统是非常 ...

  3. 计算机网络邮件客户编程,北京理工大学-计算机网络实践-实验4POP3邮件客户程序.docx...

    北京理工大学-计算机网络实践-实验4POP3邮件客户程序 实验四 POP3 邮件客户程序实验目的电子邮件 E-Mail 是Internet 中广泛使用的服务之一,在Internet 电子邮件系统中,邮 ...

  4. 《Unix/linux编程实践教程》------重定向程序的I/O

    <Unix/linux编程实践教程>书中举例命令more的用法: $more filename $command | more $more < filename 用法1直接显示fil ...

  5. [附源码]计算机毕业设计Python+uniapp每日签到打卡小程序gyrj5(程序+lw+远程部署)

    [附源码]计算机毕业设计Python+uniapp每日签到打卡小程序gyrj5(程序+lw+远程部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: Python ...

  6. 敏捷开发“松结对编程”实践之六:大型团队篇|后记(大型研发团队,学习型团队,139团队,师徒制度,人员招聘,职业生涯规划)...

    本文是"松结对编程"系列的第六篇.(之一,之二,之三,之四,之五,之六,之七,之八) 松结对编程是小型团队的实践,大约运行在1个师傅+1-3个徒弟的尺度上,当面临更大尺度的时候,就 ...

  7. 视频教程-算法设计与编算法设计与编程实践---基于leetcode的企业真题库程实践-C/C++

    算法设计与编算法设计与编程实践---基于leetcode的企业真题库程实践 夏曹俊:南京捷帝科技有限公司创始人,南京大学计算机硕士毕业,有15年c++跨平台项目研发的经验,领导开发过大量的c++虚拟仿 ...

  8. 【组队学习】【26期】编程实践(Python办公自动化)

    编程实践(Python办公自动化) 论坛版块: http://datawhale.club/c/team-learning/29-category/29 开源内容: https://github.co ...

  9. 【组队学习】【26期】编程实践(Django网站开发)

    编程实践(Django网站开发) 论坛版块: http://datawhale.club/c/team-learning/28-category/28 开源内容: https://github.com ...

最新文章

  1. php多维数组和对象,在PHP中将多维多对象数组转换为标准多维数组
  2. 安装nexus时遇到的一个问题
  3. 原子变量、volatile、synchronized的可见性和原子性比较
  4. HiveSQL窗口函数
  5. 由一个问题引发的思考
  6. python字典顺序遍历_在Python中,如何按已排序的键顺序遍历字典?
  7. 【Oracle Database】数据库控制文件管理
  8. OpenStack组件
  9. php 域名白名单,域名白名单验证
  10. java8 两个list取差集_java8 多个list对象用lambda求差集操作
  11. android 好用的工具,android studio 的几个好用的工具
  12. LuoguP1131 [ZJOI2007]时态同步
  13. Ansible Tower - 使用入门 3 - 通过模板运行 Git 上的 Playbook 和 Role
  14. 真的假的?LiFi或将取代WiFi
  15. EJB3.0学习笔记---MDBbean--区分P2P模式和Pub/Sub模式的示例
  16. Java队列Queue的使用
  17. 李沐动手学深度学习d2l
  18. 微信小程序——校园服务小程序(四)校园论坛加预约理发服务
  19. 淘宝闲鱼京东等电商api的简单调用
  20. 乐富支付:互联网金融下的民企新生态

热门文章

  1. 185Echarts - 日历坐标系(Calendar Lunar)
  2. linux查看网卡pcie插槽,Linux下查看PCI-E插槽信息的方法
  3. pclexpress是什么主板_工业主板PCIE插槽与PCI插槽有什么区别
  4. 【动画演示软件】Focusky教程 | 如何设置帧暂时隐藏,在播放该帧时才出现?
  5. 经验分享 | LCR数字电桥校准方法开路/短路清零
  6. 文本指纹算法和系统简述
  7. 遇到问题时,如何跟客户沟通
  8. 大海贼探险物语机器人_大航海探险物语攻略大全 职业、宠物选择配色攻略汇总...
  9. 一点记忆——翩翩喜欢你
  10. volatile用法详解