(一)声明
本文仅供学习交流使用,如有发热、感冒、咳嗽请及时根据当地yiqing防控办法及时上报
(二)需求
首先,我双手支持和配合学校相关yiqing防控政策。
其次,每天重复劳动让我们软件专业情何以堪。说干就干,自己动手,丰衣足食~
(三)准备工作
①python的安装,下方链接下载python3.0以上版本Download Python | Python.orghttps://www.python.org/downloads/
② selenium 和requests库安装
打开命令行cmd,直接使用 pip 安装命令:
pip install selenium
pip install requests
③CHROMEDRIVER 下载安装
要下载与自己所安装 chrome 浏览器版本对应的 Chromedriver 版本,因此首先查看浏览器版本,可以直接进入设置→关于 Chrome,也可以在浏览器地址栏中输入:chrome://version 查看。我的 Chrome 版本号为:99.0.4844.51,因此下载最新的99.0.4844.51的版本就行。
Chromedriver 下载地址:
1、官方下载有时候可能进不去http://chromedriver.storage.googleapis.com/index.htmlhttps://chromedriver.storage.googleapis.com/index.html
2、国内淘宝镜像CNPM Binaries Mirrorhttps://npm.taobao.org/mirrors/chromedriver/
选择自己对应的系统版本
Chromedriver 安装:
Windows 下解压安装包得到 chromedriver.exe 文件,其实现在就已经可以使用了,不过每次使用时要告诉程序 chromedriver.exe 的具体路径;比如:(放在当前python文件的同一目录下)
但是为了以后使用方便,我们干脆一劳永逸,加入环境变量里:
把 chromedriver.exe 放到 chrome 的安装路径下(我的是C:\Users\17965\AppData\Local\Google\Chrome\Application)
并复制当前路径(C:自己的\Local\Google\Chrome\Application)添加到环境变量中,
在 cmd 命令窗口下输入 chromedriver 验证是否 ok
④钉钉机器人消息提醒设置(如果不需要可以省略)
创建一个钉钉群聊进入设置,配置一个机器人如下步骤:
设置完了以后要保存好webhook地址和图中第五部的密钥
(四)代码部分
没有钉钉消息提醒的版本
#导入依赖库
import time
from selenium import webdriver
nam=['账号一','账号二']
password=['密码一','密码二']
def work(names,passwords):
try:
# 打开浏览器,进入易班第三方登录
browser = webdriver.Chrome()
#获取登录网站这里以嘉职打卡网站为例
browser.get('https://oauth.yiban.cn/code/html?client_id=661a2f7bfd12f200&redirect_uri=http://newca.jxvtc.edu.cn/oauth/login/oAuth&state=')
#输入账号
browser.find_element_by_id("oauth_uname_w").send_keys(names)
#输入密码
browser.find_element_by_id("oauth_upwd_w").send_keys(passwords)
time.sleep(3)
#点击登录
browser.find_element_by_class_name("oauth_check_login").click()
#线程强制停5秒等网页加载
time.sleep(5)
# 点击否 获取要点击元素的相对路径
browser.find_element_by_xpath("iv/div[2]/div/div/span[2]").click()
time.sleep(2)
#点击提交
browser.find_element_by_xpath("html/bodyv[1]/div[1]").click()
time.sleep(5)
# 退出浏览器
# browser.quit()
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())+": Clock Success!")
except:
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())+": Clock Fild!")
#循环遍历用户
for i in range(2):
names=nam[i]
passwords=password[i]
work(names,passwords)
有钉钉消息提醒的版本
#导入依赖库
import time
from selenium import webdriver
import hmac
import hashlib
import base64
import urllib.parse
import requests
import json
rename=['THE_K','牛马']
nam=['账号一','账号二']
password=['密码一','密码二']
#定义数据类型
timestamp = str(round(time.time() * 1000))
#这里填自己机器人miyao
s删除e文字cret = 'miyao'
secret_enc = secret.encode('utf-8')
string_to_sign = '{}\n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign = urllib.parse.quote(base64.b64encode(hmac_code))
#定义数据类型
headers={'Content-Type': 'application/json'}
#填自己的钉钉机器人webhook
webhook = 'https://oapi.dingtalk.com/robot/send?access_token=c27a4913978ea122c35×tamp='+timestamp+"&sign="+sign
def work(names,passwords,renames):
try:
# 打开浏览器,进入易班第三方登录
browser = webdriver.Chrome()
#获取登录网站这里以嘉职打卡网站为例
browser.get('https://oauth.yiban.cn/code/html?client_id=661a2f7bfd12f200&redirect_uri=http://newca.jxvtc.edu.cn/oauth/login/oAuth&state=627c77785b8c2ec6980f2cd86cfd33cb')
#输入账号
browser.find_element_by_id("oauth_uname_w").send_keys(names)
#输入密码
browser.find_element_by_id("oauth_upwd_w").send_keys(passwords)
time.sleep(3)
#点击登录
browser.find_element_by_class_name("oauth_check_login").click()
#线程强制停5秒等网页加载
time.sleep(5)
# 点击否 获取要点击元素的相对路径
browser.find_element_by_xpath("iv/div[2]/div/div/span[2]").click()
time.sleep(2)
#点击提交
browser.find_element_by_xpath("html/bodyv[1]/div[1]").click()
time.sleep(5)
# 退出浏览器
# browser.quit()
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())+": Clock Success!")
x=time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
data = {
"msgtype": "text",
"text": {"content": x+"用户"+renames+" "+'打卡成功'},
"isAtAll": True}
res = requests.post(webhook, data=json.dumps(data), headers=headers) #发送post请求
print(res.text)
except:
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())+": Clock Fild!")
x=time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
data1 = {
"msgtype": "text",
"text": {"content": x+"用户"+renames+" "+'打卡失败请手动打卡'},
"isAtAll": True}
res = requests.post(webhook, data=json.dumps(data1), headers=headers) #发送post请求
print(res.text)
#循环每个用户
for i in range(10):
renames=rename[i]
names=nam[i]
passwords=password[i]
work(names,passwords,renames)
(五)定时部分
可以利用windows定时任务,不过电脑要开机才会执行,最好是有个服务器。