西安交大体温自动填报程序!自动化就是强!
作者:互联网
该程序仅供学习和娱乐,如果真的涉及重要疫情信息,请如实向上填报。
-
已经安装python。
-
需要安装selenium库。
-
还需要装好浏览器驱动,我用的是Win7下360极速浏览器(360Chrome)。当然也可以选用其他的更快更好的。Win10下搭建Python3.7.1 selenium3 Chrome开发环境。最后我是下载得到的驱动命名为Chromedriver.exe然后扔到了G:/360Chrome/360Chrome/Chrome/Application目录下。
from selenium import webdriver import os import time import random def main(): # 如果没有将chromediriver驱动放到Python的Scripts全局目录,则需要指定对应的执行路径 # 指定绝对路径,引入chromedriver.exe chromedriver = "G:/360Chrome/360Chrome/Chrome/Application/chromedriver.exe" ## chromedriver = "G:/360Chrome/360Chrome/Chrome/Application/360chrome.exe" os.environ["webdriver.chrome.driver"] = chromedriver browser = webdriver.Chrome(chromedriver) # 如果将驱动复制到全局目录,则不需要指定驱动路径,如下: ## browser = webdriver.Chrome() # 设置浏览器需要打开的url url = "http://one.xjtu.edu.cn/EIP/nonlogin/user/index.htm" browser.get(url) home_page = browser.current_window_handle time.sleep(2) # 单击登录按钮 browser.find_element_by_css_selector("a[class=login-btn").click() time.sleep(2) # 登录 browser.find_element_by_css_selector("input[type=text").send_keys("这里输入学号") browser.find_element_by_css_selector("input[type=password").send_keys("这里输入密码") browser.find_element_by_id("account_login").click() time.sleep(2) # 寻找并跳转至表单 iframe1=browser.find_element_by_tag_name("iframe") browser.switch_to.frame(iframe1) # 打开每日报标签 browser.find_element_by_partial_link_text("健康每日报").click() time.sleep(2) # 关闭原标签 browser.close() # 跳转至每日报标签 all_handles = browser.window_handles for handle in all_handles: if handle != home_page: browser.switch_to.window(handle) # 再次登录 browser.find_element_by_css_selector("input[type=text").send_keys("这里再输入学号") browser.find_element_by_css_selector("input[type=password").send_keys("这里又是密码") browser.find_element_by_id("account_login").click() time.sleep(2) # 先进入大表单,寻找“本科生每日”>iframe1 iframe1=browser.find_element_by_tag_name("iframe") browser.switch_to.frame(iframe1) time.sleep(2) # 进入大表单的第二[1]个小表单里面找元素iframe1>iframes[1] iframes = browser.find_elements_by_tag_name('iframe') browser.switch_to.frame(iframes[1]) browser.find_element_by_partial_link_text("本科生每日").click() time.sleep(1) # 回退两次,进入第二[1]个大表单里面,寻找“每日健康填报”>iframes[1] browser.switch_to.parent_frame() browser.switch_to.parent_frame() iframes = browser.find_elements_by_tag_name('iframe') browser.switch_to.frame(iframes[1]) browser.find_element_by_css_selector("li[data-blname=每日健康填报").click() time.sleep(2) # 回退一次,>iframes[2]>iframes[0],填写 browser.switch_to.parent_frame() iframes = browser.find_elements_by_tag_name('iframe') print(iframes,'\n') # 显示现有表单 browser.switch_to.frame(iframes[2]) iframes = browser.find_elements_by_tag_name('iframe') browser.switch_to.frame(iframes[0]) time.sleep(1) browser.find_element_by_id("mini-3$2").click() # 选择健康码为绿色 tpt=random.randint(3,6)/10+36 # 计算随机体温 tpt=str(tpt) # 转化为字符串 browser.find_element_by_id("BRTW$text").send_keys(tpt) # 输入体温 browser.switch_to.parent_frame() # 表单回退 browser.find_element_by_id("sendBtn").click() # 提交 time.sleep(2) browser.find_element_by_partial_link_text("确定").click() # 确认 time.sleep(2) # 关闭浏览器 browser.quit() if __name__ == '__main__': main()
最后提交完信息以后浏览器会正常关闭。
如果程序中途运行卡住了,可能是浏览器还没反应过来,程序就进入下一步了。 可以在卡住的位置增大等待时间,即增加time.sleep(“SleepTime”)的休息时间SleepTime。
开机自启办法:
-
上述代码存为pytest.py。
-
在python主目录写了一个txt文件。
start python pytest.py pause
-
将该txt文件后缀名改为“.bat”。
-
双击该bat文件程序是否正常运行。
-
把该bat文件快捷方式添加到C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp文件夹。
-
下次开机时检查程序是否正常启动。
啊,填完这个表真的好累啊,框架里面还内联着框架,如果能用一定要给我点赞啊。。。 有问题的话欢迎吐槽和交流。看到的话都会回复。
后记
近期有很多朋友通过私信咨询有关Python学习问题。为便于交流,点击蓝色自己加入讨论解答资源基地
标签:iframes,填报,西安交大,element,体温,sleep,time,find,browser 来源: https://blog.csdn.net/weixin_43881394/article/details/111404637