论如何优雅的在智慧济大上填报体温

169 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

你是否还在为每天的体温填报而烦恼?你是否还在为每天被@而烦恼??骚年啊,看完这篇文章你的体温填报不再是问题。

一、解决方案

1.方案

使用python编写selenium脚本,并在服务器中设置每日自动执行。方案仅限智慧济大,其他学校的网站无法验证

2.方案需求

硬件:一台能全天运行的电脑或服务器(推荐使用AWS云服务器,学生用户免费一年,足够撑到毕业) 软件:python3、selenium、浏览器及其相应的selenium驱动

selenium自动化测试环境配置方法,请自行去数据采集的课程群里找上课时的视频。

二、selenium脚本

from selenium import webdriver
import time


def login(User, Pwd):
    Driver.get("https://sso.ujn.edu.cn/tpass/login")  # 访问登录界面
    Driver.find_element_by_xpath("//div[@class='login_box_up']/input[@type='text']").send_keys(User)  # 输入用户名
    Driver.find_element_by_xpath("//div[@class='login_box_up']/input[@type='password']").send_keys(Pwd)  # 输入密码
    Driver.find_element_by_xpath("//span[@class='landing_btn_bg']/input").click()  # 点击登录
    Driver.get(  # 访问体温填报页面
        "http://ehall.ujn.edu.cn/fp/view?m=fp#from=hall&serveID=599a1e21-79aa-423f-aee9-4a18c9310f0b&act=fp/serveapply")
    time.sleep(5)  # 睡一会等待弹窗出来
    Driver.find_element_by_xpath(  # 点击“我已阅读并确认 ”
        "//div[@class='layui-layer-content']/div/div/div[@class='modal-footer']/button[contains(text(),'我已阅读并确认 ')]").click()
    Driver.find_element_by_xpath(  # 点击申请
        "//div[@class='col-md-2 col-sm-2 col-xs-12 btn-22-center padding-none']/button").click()
    time.sleep(5)  # 等待填报完成(一天无论填报几次都适用)
    Driver.get("http://one.ujn.edu.cn/up/logout")  # 注销
    time.sleep(5)


if __name__ == '__main__':
    Driver = webdriver.Chrome()  # 获取浏览器驱动
    Driver.maximize_window()  # 最大化窗口
    Users = ["用户1", "用户2"]  # 用户列表
    Pwds = ["密码1", "密码2"]  # 密码列表
    journal = open("journal.csv", "a+", encoding="utf-8")  # 编写日志
    for (User, Pwd) in zip(Users, Pwds):  # 遍历用户名、密码
        try:
            login(User, Pwd)  # 登录并填报体温
        except:
            date = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())  # 获取现在的时间
            journal.write(User + "," + date)  # 记录用户名和出错时间
            continue  # 继续


三、设置python脚本定时执行

Windows环境服务器请参考这里:点击跳转(未测试过) Linux环境服务器请参考这里:点击跳转(测试过可用)

四、如果文章对你有用,请点赞并收藏呦!!!