18
网络通信技术
Network Communication Technology
电子技术与软件工程
Electronic Technology & Software Engineering
1 引言
通信工程的质量监督管理中有一项重要的环节就是工程开工前15日内要做质监申报,各电信运营商工程建设部门要上报每个工程的基本情况和建设流程,政府管理部门对每个工程的流程、金额等进行审核,确保该工程是合理、合规、合法的。随着通信行业的发展,工程项目越来越多,目前笔者一年要负责审核上万个项目,完全依靠手工审批既费时、费力,也不现实。
Python 是一种跨平台的计算机程序设计语言,是一个结合了解释性、编译性、互动性和面向对象的脚本语言。Python 语言入门简单,功能强大,不需要C/C++语言的内存管理等繁琐部分,使应用者可以集中精力用于业务逻辑开发。
为此,本文提出使用Python 语言根据审批规则进行辅助自动审批的系统,这样防止人工审批的错漏,也降低人工审批的劳动强度。2 应用场景
通信质监系统采用B/S 架构工作,工程建设单位通过WEB 页面登录系统后,可以上报具体的工程内容。管理员登录到审批系统中,可以查询已经上报的项目列表,点击该项目,会打开一个新的浏览器选项卡,新的选项卡中显示该项目的详细信息,并在最下方有审批意见输入框,还有三个按钮,分别为同意、不同意和关闭。
审批的过程就是打开每个上报项目,检查其建设流程是否符合工程项目建设日期规范,安全生产费是否符合国家规定,资金的金额是否符合项目管理规范等,是否投资建设已知的违规工程。3 现有解决方案分析
能够解决应用问题的可能方案有以下几种:3.1 AutoIt
一种类似BASIC 的程序语言,基于Windows 操作系统,通过编写代码来模拟鼠标和键盘的操作,利用模拟键盘按键、鼠标移动和窗口/控件的组合来实现自动化操作。3.2 按键精灵
一款模拟鼠标键盘动作的软件,可以录制或编写一组键盘鼠标操作,用于解决一些传统软件无法覆盖的电脑问题,可用于任何有待提高工作效率的领域,例如:业务流程优化(使用脚本优化业务流程,提高工
作效率,降低企业成本)、办公自动化(自动处理机械枯燥的办公室电脑操作,例如企业信息发布、报表提交、邮件整理等)、日常应用(将电脑日常应用一键批量操作,例如股票交易中的闪电下单、操作预警等)、软件自动测试(模拟人工操作进行软件测试)、网游辅助(模拟人工操作网络游戏的人物,将玩家从游戏公司不合理的长时间操作中解脱出来)3.3 JavaScript
JavaScript (简称“JS ”) 是一种具有函数优先的轻量级、解释型或即时编译型的高级编程语言。它以开发WEB 页面的脚本语言而出名,因此对WEB 页面有着最强的操作能力。3.4 小结
上述几种自动执行的软件设计技术都有一定缺陷,AutoIt 和按
基于Python 语言的通信工程质监自动审批系统的设计
雷宏伟
(陕西省通信工程质量监督中心西安质监站 陕西省西安市 710075)
键精灵虽能模拟鼠标键盘的操作,但无法执行较复杂的条件判断。审核工作是条件判断多,操作较少的一种工作。
JS 功能强大,但是学习成本高,程序必须注入到已有的WEB 页面中,而且与WEB 界面有强绑定,WE
B 页面任何一点改动都会造成JS 的失效,调试和后续优化都会比较复杂和繁琐。4 系统方案实现的关键技术研究4.1 自动审批的系统的分析
自动审批方案要完成的工作,就是登录WEB 审批页面,查询是否有新上报的项目,如果有项目,就打开该项目,检查填写规范
摘 要:本文介绍了采用Python 和Selenium,
Openpyxl
等辅助人工实现自动操作重复性强且有明确判断规则任务的关键思路和框架。通过一个具体的通信工程质量监督项目的例子,实现了人工辅助审批的系统设计和实现,大大提高了日常工作的生产效率。
关键词:Python;Selenium;Openpyxl;通信质监;自动审批图1
图2
19
网络通信技术
Network Communication Technology
电子技术与软件工程
Electronic Technology & Software Engineering
性,然后对工期时间进行规范性检查,再然后对项目金额进行规范性检查,最后对安全生产费费率和其它内容进行检查,然后根据检查的结果填写审批意见,并根据检查情况决定对该项目进行批准还是拒绝。
对一个项目审批的流程图如图1所示。4.2 浏览器的自动控制
Selenium 是一个免费的控制浏览器运行的组件,能像真实用户所做的一样操作浏览器中WEB 页面的任何元素。其实现了WebDriver 的接口,提供了不同平台操作各类浏览器的接口,比如目前主流的: IE, Firefox, Chrome, Opera, Android 等各个平台的访问。Selenium 的核心是用 JavaScript 编写的,因此Selenium 可以在任何支持JS 脚本的浏览器中运行。
登录的示例代码如下:
bs = webdriver.Chrome() #打开浏览器bs.get(url='网页URL') #打开指定页面
un=bs.find_element_by_id('userName') #到用户名字段un.send_keys(Name) #输入用户名pw=bs.find_element_by_id('passWord')pw.send_keys(PassWrod)
js='login();' #定义了JS 脚本(原登录按钮会打开关闭新窗口)bs.execute_script(js) #运行脚本进行登录判断字段是否为空的示例代码如下:
_approvalDate=bs.find_element_by_name("project.approvalDate").get_attribute("value") #立项批复时间
if _approvalDate!='' :
approvalDate=datetime.datetime.strptime(_approvalDate,"%Y-%m-%d") #立项批复时间
else:
ApproveConent.append("立项批复时间不能为空!\n") 4.3 浏览器的定时刷新
众所周知,浏览器在长时间不与服务器交互信息时,服务器会清理该Session ,则当前的登录会变无效,导致后续无法继续进行审批,因此系统设定每隔30秒钟,对浏览器进行一次刷新,确保Session 一直有效。
4.4 浏览器关联选项卡的管理
审批过程中新项目原平台都会打开新的浏览器选项卡,然后在新选项卡中打开该项目明细,审批完该项目后,原平台也会关闭刚才新建的选项卡。
Selenium 提供浏览器选项卡的管理机制相对有限,窗口多次打开和关闭,Selenium 的切换特别容易造成混乱,因此本项目采用打开一个浏览器选项卡,在该选项卡中完成所有项目审批,然后再关闭。
笔者分析了WEB 清单列表页面的代码,发现了每个项目都有一个不同的链接地址。这样就可以针对每个链接,实际就是每个项目,进行审批,示例代码如下:
#获取审批项目的每个地址
Listurl=bs.find_elements_by_tag_name('input')for each in Listurl:
DealOne(bs,each) #循环审批每一个项目4.5 实时读取EXCEL非法项目列表
Openpyxl 是一个开源项目,Openpyxl 模块是一个读写Excel 2010以上版本文档的Python 库,能够轻松处理扩展名为xlsx 的文档。
微软将Excel 2010版本作为一个分水岭,之前的文档核心结构是复合文档类型的结构,扩展名为xls ,从Excel 2010及以后,默认使用的核心结构是 XML 类型的结构。如果要处理更早格式的Excel 文档,需要用到其它库(如:xlrd 、xlwt 等),这也是
Openpyxl 比较其他模块的不足之处。
Openpyxl 是一个Python 下优秀的模块,能够同时读取和修改Excel 文档,甚至可以对单元格进行详细设置,设置内容包括字体、字体大小、前景和背景颜等单元格样式,甚至还支持图表插入、打印设置等内容,而且可以处理数据量较大的Excel 文件,跨平台处理大量数据是其它模块没法相比的。因此,Openpyxl 成为处理Excel 复杂问题的首选库函数。
使用Openpyxl 前需要掌握三个对象和二个集合:Workbook ——工作簿,代表一个Excel 文件。
Worksheet ——工作表,就是一个Sheet ,代表一张表格。Cell ——单元格,指表格中的某个或某多个单元格。
Workbooks ——工作簿集合,是多个工作簿的集合,通过索引可以访问到集合中所有的工作簿。
Worksheets ——工作表集合,一个是多个工作表的集合,通过索引可以访问到集合中所有的工作表。
他们的包含关系如图2所示。5 实验结果
该系统共使用了不到400行代码,如果使用传统的方式至少要2000行以上的代码,代码难度和复杂度都大幅降低,后续功能扩展也很方便。
采用该自动审批系统,审批一个项目的时间从原来的平均1分钟到现在的平均3秒钟,效率提升了20倍,审批的错误率也大大降低,最重要的是可以实现24小时在线审批,这样当工程部门上报信息后,稍等一下就可以看到审批结果,可以立即补正问题,迅速进入到下一步工程建设中,工作效率也提高了很多。6 小结
文章描述了使用python 语言,对通信工程质量监督过程中进行辅助自动审批。
autoit结果表明,采用自动化审批后,减少了人为审批中经常容易犯的错误,既大大提高了审批的及时率,也提高了工程建设部门的工作效率。
参考文献
[1]张乐吟.电子病历系统设计与开发实训教学设计,2017.
[2]马宁.基于Python 的流程自动执行关键技术研究与实现,2019.[3]周阳明.基于Python 语言的自动测试系统通用软件平台实
现,2019.
[4]孙云杰.基于SSM+Spring+Security 的多角登录功能后台实
现,2020.
[5]Jonathan Bennett &AutoIt Team. AutoIt 在线文档[EB/OL].
www.autoitx/Doc/.
[6]福建创意嘉和软件有限公司.按键精灵的软件介绍与安装使用
[EB/OL]. zy.anjian/videomanual/content_01.html.
[7]卢晨.基于Selenium 进行Web 应用测试研究[J].软件导
刊,2015.
[8]龚智勇.基于Selenium 的OpenStack Horizon 自动化测试的
实现[J].国外电子测量技术,2017.
[9]黄建军,李宥谋,刘婧等.基于Python 语言的自动化测试系
统的设计与实现[J].现代电子技术,2017.
[10]周锎,赵楠,李欣.一种基于PYTHON 脚本语言的自动化测试
系统[J].南开大学学报(自然科学版),2014.作者简介
雷宏伟(1977-),男,陕西省西安市人。硕士学位,现为陕西省通信工程质量监督中心西安质监站站长,质监工程师。研究方向为计算机技术应用、通信工程管理等。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论