郑重说明:此代码程序仅为学习交流用途
前提:
1.python运行环境
2.selenium模块
安装selenium模块:打开cmd命令提示符,输入pip install selenium进行安装
3.需要有浏览器以及浏览器驱动
例如我的是谷歌chrom浏览器,需要下载chrome driver驱动,版本之间要对应上
chrome driver下载地址:CNPM Binaries Mirror
Linux
Windows
本人已将自己selenium所用到的chrome和对应的chromedriver打包好,包括Linux和Windows的都有,可以直接下载放在自己的电脑上使用,如有需要的可以私信我
具体实现代码如下:
奥兰系统每日三检体温填报
# -*- coding: utf-8 -*
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
import random
def user_login():
# 这里是找到输入框,发送要输入的用户名和密码,模拟登陆
browser.find_element(By.XPATH,"//*[@id='username']").send_keys(name)
browser.find_element(By.XPATH,"//*[@id='password']").send_keys(password)
browser.find_element(By.XPATH,"//*[@class='auth_login_btn primary full_width']").click() # 找到登录按钮并点击
try:
browser.find_element(By.XPATH,"/html/body/form/table/tbody/tr/td/table[2]/tbody/tr/td/div/span/a[5]").click() # 点击登陆后的事务办理按钮
print("登陆成功!")
print("正在填报")
except:
print("您提供的用户名或者密码有误\n登陆失败")
browser.quit()
return name,password
# 晨检
def chenjian():
time_check = "晨检"
# 点击晨检
browser.find_element(By.XPATH,"//*[@id='my_menu']/div/a[9]").click()
print("晨检开始填报")
browser.execute_script('window.scrollTo(0,document.body.scrollHeight)') #滑到底部
time.sleep(3)
# 切换frame窗口
browser.switch_to.frame(0)
# 点击下一步
next_ = browser.find_element(By.XPATH,'//*[@id="div0"]/table/tbody/tr[3]/td/img')
next_.click()
#点击勾选确定阅读
browser.find_element(By.XPATH,'//*[@id="zzcnd"]').click()
# 体温填报
print("正在填写体温")
temp = round(random.uniform(36.0,36.6),1) # 随机生成35到36的数并保留一位小数
browser.switch_to.window(browser.window_handles[0])
browser.switch_to.frame(0)
browser.find_element(By.XPATH,'//*[@id="tw_cj"]').clear() #先清空输入框
browser.find_element(By.XPATH,"//*[@id='tw_cj']").send_keys(temp) #输入体温
print("温度填写完成")
print('-------------------------')
print('今日体温:',temp)
print("正在增加记录")
browser.find_element(By.XPATH,"//*[@id='dcbc']").click()
# browser.execute_script("arguments[0].click();", element)
return time_check
# 午检
def wujian():
time_check = '午检'
# 点击午检
browser.find_element(By.XPATH,"//*[@id='my_menu']/div/a[10]").click()
print("午检开始填报")
# 体温填报
print("正在填写体温")
temp = round(random.uniform(36.0,36.6),1) # 随机生成35到36的数并保留一位小数
browser.switch_to.window(browser.window_handles[0])
browser.switch_to.frame(0)
browser.find_element(By.XPATH,'//*[@id="tw_wj"]').clear() #先清空输入框
browser.find_element(By.XPATH,"//*[@id='tw_wj']").send_keys(temp) #输入体温
print("温度填写完成")
print('----------------------')
print('今日体温:',temp)
print("----------------------\n正在增加记录")
browser.find_element(By.XPATH,'/html/body/form/div/table/tbody/tr/td/table[3]/tbody/tr[1]/td/input[2]').click()
# browser.execute_script("arguments[0].click();", element)
return time_check
# 晚检
def wanjian():
time_check = '晚检'
# 点击晚检
browser.find_element(By.XPATH,"//*[@id='my_menu']/div/a[11]").click()
print("晚检开始填报")
# 体温填报
print("正在填写体温")
temp = round(random.uniform(36.0,36.6),1) # 随机生成35到36的数并保留一位小数
browser.switch_to.window(browser.window_handles[0])
browser.switch_to.frame(0)
browser.find_element(By.XPATH,'//*[@id="tw_w"]').clear() #先清空输入框
browser.find_element(By.XPATH,"//*[@id='tw_w']").send_keys(temp) #输入体温
print("温度填写完成")
print('----------------------')
print('今日体温:',temp)
print("----------------------\n正在增加记录")
element = browser.find_element(By.XPATH,"//*[@id='databc']")
browser.execute_script("arguments[0].click();", element)
return time_check
# 获取填报成功反馈信息
def get_alertText(time_check):
try:
text=browser.switch_to.alert.text # 获取弹窗文本
print(text)
if '成功' in text: # 根据弹窗内容返回是否填报成功
print("{}填报成功!".format(time_check))
else:
print("{}填报失败!".format(time_check))
browser.switch_to.alert.accept() # 关闭alert窗口
return text
except:
return "{}填报成功".format(time_check)
# 未勾选
def text_warning():
print("未勾选我已阅读,正在重新点击!")
# browser.switch_to.alert.accept() #关闭提示窗口
browser.find_element(By.XPATH,'//*[@id="zzcnd"]').click() #点击勾选确定阅读
print("正在重新增加记录")
element = browser.find_element(By.XPATH,"//*[@id='dcbc']")
browser.execute_script("arguments[0].click();", element)
print("我已阅读高校疫情防控警示教育典型案例")
# 退出程序
def exit():
# browser.switch_to.alert.accept() # 关闭alert窗口
time.sleep(1)
browser.quit() # #关闭浏览器
if __name__=="__main__":
stu_name=["用户名1","用户名2"]
stu_passwd=["密码1","密码2"]
for i in range(len(stu_name)):
name = stu_name[i]
password = stu_passwd[i]
chrome_path = "/opt/google/chrome/chrome"
driver_path = "/home/liu/chromedriver"
options = webdriver.ChromeOptions() # 模拟浏览器打开网站
options.add_argument('--headless') #设置chrome浏览器无界面模式
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.binary_location = chrome_path #传入chrome安装地址
# browser=webdriver.Chrome(chrome_options=options,executable_path=driver_path)
s=Service(driver_path) #传入驱动地址
browser = webdriver.Chrome(options=options,service=s)
url = 'http://xxx' #要打开的网址
browser.get(url) # 浏览器打开
browser.implicitly_wait(20) # 隐式等待
browser.maximize_window() # 将窗口最大化
print("正在进入奥蓝系统")
print("正在登陆中...")
name,password = user_login() # 用户登录
now_localtime = time.strftime("%H:%M:%S", time.localtime()) # 现在的时间
# 判断时间,根据时间填报三检
strs = "="
if "6:00:00" < now_localtime < "10:00:00":
print("现在是北京时间:",now_localtime,"\n可以开始填报晨检啦!")
time_check = chenjian() # 调用晨检函数
text = get_alertText(time_check)
if "请勾选我已阅读高校疫情防控警示教育典型案例" in text:
text_warning()
get_alertText(time_check)
exit()
print("{}的{}程序已完成,程序退出!\n{}".format(name,time_check,strs*40))
elif "10:30:00" < now_localtime < "13:30:00":
print("现在是北京时间:",now_localtime,"\n可以开始填报午检啦!")
time_check = wujian() # 调用午检函数
text = get_alertText(time_check)
exit()
print("{}的{}程序已完成,程序退出!\n{}".format(name,time_check,strs*40))
elif "16:00:00" < now_localtime < "23:00:00":
print("现在是北京时间:",now_localtime,"\n可以开始填报晚检啦!")
time_check = wanjian() # 调用晚检函数
text = get_alertText(time_check) # 填报是否成功
print("{}的{}程序已完成,程序退出!\n{}".format(name,time_check,strs*40))
exit() # 程序退出
运行结果如下