from selenium import webdriver
from selenium.webdriver import Chrome, ActionChains
import pandas as pd
import time
from selenium.webdriver.common.by import By
from time import sleep
allnum = int(input("每位学生累计需要录入多少次指导记录?:"))
# driver=Chrome() # 使用谷歌浏览器
driver = webdriver.Edge() # 使用edge浏览器
def getData():
# 指导记录表格汇总
path = ''
df = pd.read_excel('指导记录汇总.xlsx',index_col=False,header=0,engine='openpyxl')
# 6次指导日期
dateList = list(df.columns)[2:]
# 将选定的列转换为二维列表
result = df[dateList].values.tolist()
stusno = list(df['学号'])
stusno = [str(x) for x in stusno]
stuname = list(df['姓名'])
print(stusno)
# 输出结果
allrecord = dict(zip(stusno, result))
print(allrecord)
return dateList,stusno, stuname,allrecord
def login():
login_url = "https://cloud.fanyu.com/organ/lib/nuit"
username = "XXXXXXXXX"
password = "XXXXXXXX"
# 向维普网页发送请求
driver.get(login_url)
# 最大化窗口
driver.maximize_window()
#点击系统登录入口
driver.find_element(By.XPATH,'//*[@id="entrance-blockgroup"]/span[1]/span/div/div[3]').click()
time.sleep(3)
# 输入用户名和密码,并提交表单
driver.find_element(By.XPATH, "/html/body/div/div[1]/div[11]/div/div[2]/div[2]/form/ul/li[1]/input").send_keys(username)
driver.find_element(By.XPATH, "/html/body/div/div[1]/div[11]/div/div[2]/div[2]/form/ul/li[2]/input").send_keys(password)
# 点击登录按钮
driver.find_element(By.XPATH, "/html/body/div/div[1]/div[11]/div/div[2]/div[2]/button").click()
sleep(10)
def fillzdrecord(dateList,stusno, stuname,allrecord):
# 切入iframe框架
driver.switch_to.frame('layui-layer-iframe1')
# 点击指导教师
driver.find_element(By.XPATH,"//div[text()='指导教师']").click()
time.sleep(8)
driver.switch_to.default_content()
# 点击过程管理
driver.find_element(By.XPATH,'//*[@id="LAY-system-side-menu"]/li[4]/a').click()
time.sleep(4)
# 点击指导日志
driver.find_element(By.XPATH,'//*[@id="LAY-system-side-menu"]/li[4]/dl/dd[5]/a').click()
time.sleep(4)
# 切入iframe框架
driver.switch_to.frame(driver.find_element(By.XPATH,'// *[ @ id = "LAY_app_body"] / div[2] / iframe'))
driver.switch_to.frame(driver.find_element(By.XPATH,'//*[@id="menus-content"]/div/div/div/div[1]/iframe'))
# 学生指导次数不一,学生序列可能和表格不一致
stuNum = len(driver.find_elements(By.XPATH,'/html/body/div/div/div/div[2]/div[2]/div[2]/table/tbody/tr')) # 获取学生数量
SN = []
ZDN = []
SNAME=[]
for i in range(stuNum):
stusno = driver.find_element(By.XPATH,
'/html/body/div/div/div/div[2]/div[2]/div[2]/table/tbody/tr[' + str(i + 1) + ']/td[6]/div').text
zdnum = driver.find_element(By.XPATH,
'/html/body/div/div/div/div[2]/div[2]/div[2]/table/tbody/tr[' + str(i + 1) + ']/td[8]/div').text
sname=driver.find_element(By.XPATH,
'/html/body/div/div/div/div[2]/div[2]/div[2]/table/tbody/tr[' + str(i + 1) + ']/td[5]/div').text
SN.append(str(stusno))
ZDN.append(int(zdnum))#学生已有指导次数
SNAME.append(sname)
print('学生学号:',SN,'姓名:',SNAME,'已经指导次数:',ZDN)
for i in range(len(SN)):
print(SNAME[i])
if SNAME[i]=='XXXXXX':#这里需要改成自己要测试的学生名字
# driver.switch_to.default_content()
print('正在填写学号为', SN[i], '姓名为', SNAME[i],'的学生的指导记录,该生已有',ZDN[i],'次指导记录')
if ZDN[i] < allnum:
try:
time.sleep(5)
xinzeng=driver.find_element(By.XPATH,"/html/body/div/div/div/div[2]/div[2]/div[3]/div[2]/table/tbody/tr["+ str(i + 1) + "]/td/div/a[2]")
driver.execute_script("arguments[0].click()", xinzeng)
time.sleep(5)
except:
time.sleep(8)
xinzeng = driver.find_element(By.XPATH,
"/html/body/div/div/div/div[2]/div[2]/div[3]/div[2]/table/tbody/tr[" + str(
i + 1) + "]/td/div/a[2]")
driver.execute_script("arguments[0].click()", xinzeng)
time.sleep(5)
time.sleep(4)
# 切出iframe框架
driver.switch_to.default_content()
time.sleep(4)
nofillnum=allnum - ZDN[i]
for n in range(nofillnum):#还需录入的次数
driver.switch_to.frame(driver.find_element(By.XPATH,'//*[@class="layui-layer-content"]/iframe'))
# perstu = (By.XPATH, '// *[ @ id = "layui-layer-iframe'+str(i+1)+'"]')
# WebDriverWait(driver, 30).until(EC.presence_of_element_located(perstu))
# 填写指导日期
print('新增指导日期:', dateList[ZDN[i]+ n])
print('新增记录:', allrecord[SN[i]][ZDN[i] + n])
driver.find_element(By.ID, "cid_1_widget").send_keys(dateList[ZDN[i]+n])
time.sleep(5)
# 填写指导内容
driver.find_element(By.ID, "cid_3_widget").send_keys(allrecord[SN[i]][ZDN[i]+n])
if n==nofillnum-1:
# 每个学生的指导记录全部填写完成后点击确定
driver.switch_to.default_content()
driver.find_element(By.XPATH,'//*[@class="layui-layer-btn0"]').click()
time.sleep(4)
driver.switch_to.frame(
driver.find_element(By.XPATH,'// *[ @ id = "LAY_app_body"] / div[2] / iframe'))
driver.switch_to.frame(
driver.find_element(By.XPATH,'//*[@id="menus-content"]/div/div/div/div[1]/iframe'))
else:
# 点击“确定并继续”
driver.switch_to.default_content()
driver.find_element(By.XPATH,'//*[@class="layui-layer-btn1"]').click()
time.sleep(4)
# driver.switch_to.default_content()
else:
print('结束')
continue
if __name__ == '__main__':
dateList,stusno, stuname,allrecord = getData()
login()
fillzdrecord(dateList,stusno, stuname,allrecord)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
很多高校的本科毕业设计用到:维普毕业论文(设计)管理系统,里面录入学生指导记录非常麻烦,一个学生要录入很多次,每次都要选择日期,再录入指导内容,来来回回粘贴也比较麻烦。我通常是将所有学生的指导记录写在一个大的excel里面,最后通过Python代码实现了表格到系统的一个自动录入。 1、因为我们学校是要求一个学生至少六次,所以在表格的设计上是固定了六个指导日期,如果需要有更多次数的话可以自己加列(另外,代码没有特别高级的去针对每个学生有不同的指导次数这样的功能,可以做但是我觉得没必要)。另外,表格的格式有严格的要求,必须是xlsx的,因为代码里的引擎只支持这个格式,表头应和文件里保持一致。 2、另外放了两份代码,一份用作测试,需要更改为自己指导的某个学生的名字(不要选择重名的),可以测试一下这个学生的指导记录是否能正确录入,如果测试成功可以选择全局代码去做全部学生的指导记录录入。记得两份代码都需要修改登录网址、登录名、密码、登录入口、以及准备好指导记录汇总表格。
资源推荐
资源详情
资源评论
收起资源包目录
维普指导记录填入.zip (6个子文件)
维普指导记录填入
allcopyweipu.py 7KB
test_copyweipu.py 7KB
培训维普指导记录录入(新手阅读).pptx 4.51MB
准备工作(适合专业类人士阅读).docx 332KB
指导记录汇总.xlsx 10KB
MicrosoftWebDriver.exe 16.55MB
共 6 条
- 1
资源评论
孩子快醒醒
- 粉丝: 103
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功