办公室姜姐姐拉着我看了她最近在做的一个特无语的工作,那就是一个个录入教师的学分,全校两三百号人的数据就需要那样一个个重复的输入进去。她还告诉我,有同行解决了自动录入,但是不知道他们怎么自动的。我想了想,再网上查查,发现可以用web自动化来解决它(我这个井底之蛙确实见识少,这个早就存在的技术结果还需要查),于是花了8个小时左右来进行学习并实践,终于解决了这个问题,期间碰到的最多的问题就是窗口切换后的对应控件的获取不到的问题,翻阅了不少技术文章,做了很多次尝试,理解自动化的原理后,最终体会到了成功的快乐,也再一次见证自己的学习能力。
下面贴出代码,希望能帮到大家。

from selenium import webdriver
import time
from selenium.webdriver.common.by import By
import openpyxlwb =openpyxl.load_workbook("nfzxsfz.xlsx")#此xlsx文件中存着我校的老师所有姓名+身份证号
ws = wb.active
sfz = list()
for x in range(2,200):sfz.append(ws.cell(row = x,column = 2).value)wd = webdriver.Chrome("chromedriver")
wd.implicitly_wait(5)
wd.get("http://jiaoshi.hnedu.cn/")
#点击(管理部门和学校管理员登录入口)链接
wd.find_element(By.CSS_SELECTOR,'body > div.link-txt > ul > li:nth-child(1) > a').click()
#切换当前窗口到管理员登录入口
for handle in wd.window_handles:# 先切换到该窗口wd.switch_to.window(handle)# 得到该窗口的标题栏字符串,判断是不是我们要操作的那个窗口if '全国教师管理信息系统' in wd.title and '登录入口' not in wd.title:# 如果是,那么这时候WebDriver对象就是对应的该该窗口,正好,跳出循环,break
#print(wd.current_url)
#填写登录框中账号
wd.find_element(By.XPATH,'/html/body/div/div[4]/form/div[2]/ul/li[1]/input[1]').send_keys('******')  #此处*****是账号
#填写登录框中密码
wd.find_element(By.XPATH,'/html/body/div/div[4]/form/div[2]/ul/li[2]/input[1]').send_keys('*********')#此处*****是密码
#填写验证码
yanzheng = input('请输入验证码:')
wd.find_element(By.XPATH,'/html/body/div/div[4]/form/div[2]/ul/li[5]/input').send_keys(yanzheng)
#点击登录按钮
wd.find_element(By.XPATH,'/html/body/div/div[4]/form/div[2]/div[2]/input[1]').click()
#点击“学分(学时)补录”
wd.find_element(By.XPATH,'/html/body/form/div[5]/div/div/div[1]/div[2]/ul/li[16]/div').click()
#点击 新增 按钮
wd.find_element(By.XPATH,'/html/body/form/div[5]/div/div/div[1]/div[2]/ul/li[16]/ul/li[1]/div/span[4]').click()
#将窗口切换到新增学分对话框中
wd.switch_to.frame(wd.find_element(By.CSS_SELECTOR,'#tabs > div.tabs-panels.tabs-panels-noborder > div:nth-child(2) > div > iframe'))
for x in sfz:#点击“姓名旁的搜索图标”wd.find_element(By.XPATH,'/html/body/div[4]/div[2]/div[2]/button[1]/span[2]').click()wd.switch_to.parent_frame()#定位到新增学分(学时)补录wd.switch_to.frame(wd.find_element(By.TAG_NAME,"#addTbBizPxjgbl_iframe"))#点击姓名后搜索图标wd.find_element(By.XPATH,'/html/body/div[4]/form/table/tbody/tr[1]/td[2]/span[1]').click()time.sleep(3)#选择老师#wd.find_element(By.XPATH,'/html/body/div[6]/div[2]/div[2]/div/div[3]/div[5]/table/tbody/tr[3]/td[2]/a').click()#换一种查询的方式再处理wd.find_element(By.XPATH,'/html/body/div[6]/div[2]/div[1]/form/table/tbody/tr[2]/td[2]/input').send_keys(x)wd.find_element(By.XPATH,'/html/body/div[6]/div[2]/div[1]/form/table/tbody/tr[2]/td[3]/div/a[1]/span').click()time.sleep(4)xx = wd.find_element(By.XPATH,'/html/body/div[6]/div[2]/div[2]/div/div[3]/div[5]/table/tbody/tr[2]/td[2]/a')wd.execute_script("arguments[0].click();",xx)#设置培训年度wd.find_element(By.XPATH,'/html/body/div[4]/form/table/tbody/tr[2]/td[2]/input').send_keys('2020')wd.find_element(By.XPATH,'/html/body/div[4]/form/table/tbody/tr[2]/td[2]/input').click()#选择培训类别wd.find_element(By.XPATH,'/html/body/div[4]/form/table/tbody/tr[2]/td[4]/span[1]/span').click()wd.find_element(By.XPATH,'/html/body/div[7]/table/tbody/tr[6]/td').click()#填写培训项目名称wd.find_element(By.XPATH,'/html/body/div[4]/form/table/tbody/tr[3]/td[2]/input').send_keys('**中学校本培训')#培训方式wd.find_element(By.XPATH,'/html/body/div[4]/form/table/tbody/tr[5]/td[2]/span[1]/span').click()wd.find_element(By.XPATH,'/html/body/div[8]/table/tbody/tr[6]/td').click()#填写培训学时wd.find_element(By.XPATH,'/html/body/div[4]/form/table/tbody/tr[5]/td[4]/span[1]/input').send_keys('24')    #此处24指当时填进去的24学时#点击保存wd.find_element(By.XPATH,'/html/body/div[4]/div/button[1]/span').click()#此处避免保存时间过长,不能瞬间弹出确定对话框,因此等待一会time.sleep(4)wd.switch_to.default_content()wd.switch_to.frame(wd.find_element(By.CSS_SELECTOR,'#tabs > div.tabs-panels.tabs-panels-noborder > div:nth-child(2) > div > iframe'))wd.find_element(By.XPATH,'/html/body/div[10]/div/div[2]/button/span').click()input()

web自动化解决全国教师管理系统学分自动录入相关推荐

  1. html中的搜索代码,Web自动化(3):网页自动搜索功能

    unsplash.jpg 写在前面 如果我们需要在期刊中搜索我们想要找的文章,那么我们如何才能达到这个目的.我们首先看一下,手动和自动对比图: 网页搜索.png 其实内容全部一样,我们只是用自动化程序 ...

  2. git关闭密码自动存储_RobotFramework实战篇PC端web自动化demo及持续集成

    自己学习自动化的话,除了要选好一款框架之外,还要选好一个用来练习的项目.这里小编推荐新手入门可以考虑一下Robotframework这个框架,原因:该框架的学习成本比较低,很多功能都是现成的,而且脚本 ...

  3. 从零开始Web自动化(三):通过selenium,9行代码实现打字网站的自动打字

    写在前面: 这个专栏主要是分享一些python.Web自动化的相关知识. 需要你具备一定的python基础,参考教程:廖雪峰python教程 掌握红框中的内容即可! 通过实战项目让你学会包括:pyth ...

  4. 自动化用例设计原则+web自动化框架

    自动化用例设计原则 web自动化框架 PO模式就是页面对象和测试用例的分离. PageObjects放页面对象,封装元素定位和元素操作(也可以单独把元素定位放到PageLocators层) basep ...

  5. Web 自动化下载及转换Word自动排版

       Web 自动化下载及转换 Word 的应用,主要涉及到爬虫技术的应用和 docx 的应用.通过爬虫的应用,能快速把你想搜集的内容以及图片,视频等下载,利用 docx实现对Word的自动排版等功能 ...

  6. html 打开页面光标自动选中输入框_初识selenium之web自动化

    今天我们学习下如何使用python编写web自动化,谈到web自动化,那么我们需要了解下市面上做web自动化的几种方式,Robotframework工具,网红WebUI自动化测试神器 - Cypres ...

  7. web自动化构建_通过在真实设备上进行自动测试来构建更好的Web

    web自动化构建 This article was originally published on Medium. 本文最初发表在Medium上 . My work is entirely dedic ...

  8. ssm基于Java web 的人人影视网站管理系统毕业设计源码290915

    目  录 摘  要 Abstract 第1章  前  言 1.1  研究背景 1.2  研究现状 1.3  系统开发目标 第2章  技术与原理 2.1  开发技术 2.2  JAVA技术 2.3  M ...

  9. ssm基于Java web 的人人影视网站管理系统 毕业设计-附源码290915

    目  录 摘  要 Abstract 第1章  前  言 1.1  研究背景 1.2  研究现状 1.3  系统开发目标 第2章  技术与原理 2.1  开发技术 2.2  JAVA技术 2.3  M ...

最新文章

  1. oracle补丁怎么配置,如何检查Oracle补丁是否已安装?
  2. 手机app 有没有window.location.href_热议小程序使用场景越来越多,未来有没有可能替代手机APP?...
  3. LeetCode 60. 第k个排列(回溯 康托展开)
  4. php的api数据接口书写实例
  5. week7 read
  6. Ansible@一个高效的配置管理工具--Ansible configure management--翻译(十一)
  7. SHEditor v0.3 SkinSharp皮肤设计工具
  8. Android:ViewPage使用教程
  9. 与lwj问答之 C++中如何修改const变量
  10. python隐藏部分代码_python源码隐藏
  11. 【MATLAB】调整坐标轴及视野
  12. 狂野飙车8服务器在哪个文件夹,狂野飙车8数据包放哪?安卓版数据包路径介绍
  13. 云麦体脂秤华为体脂秤_荣耀体脂秤和小米体脂秤对比哪个好 荣耀/小米体脂秤评测...
  14. python扫描器_Python扫描器-HTTP协议
  15. 关于登录时验证码无法显示
  16. opencv海思平台移植解决warning: ../../lib/libopencv_imgproc.so, needed by ../lib/libopencv_imgcodecs.so, not
  17. audio codec简介
  18. 写在年初,回忆这些年的春节轨迹
  19. 机器学习中的Bias和Variance是指什么
  20. Vue 计算属性缓存和方法的区别:从另一段代码来看【vue3学习笔记】

热门文章

  1. win10 装完系统后,我的电脑设置
  2. mysql数据库特殊字符_mysql数据库存入特殊字符
  3. 树洞外链网盘系统php源码去除底部版权优化版
  4. 网站建设安全:HTTPS协议的重要性及与HTTP的区别
  5. <童年>吉他弹唱,大家PP
  6. 我读故我在:《文凭社会》读后感
  7. matlab 实现二值图像孔洞填充函数imfill()
  8. MindNode 5 for Mac 5.0.1 强大的思维导图的应用
  9. CCF201412-1门禁系统(C语言)
  10. Xamarin 打开相机 选择系统照片并上传服务器