基于Python语言的通信工程质监自动审批系统的设计

2020-02-04 02:03雷宏伟
电子技术与软件工程 2020年20期
关键词:选项卡鼠标浏览器

雷宏伟

(陕西省通信工程质量监督中心西安质监站 陕西省西安市 710075)

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 小结

图1

图2

上述几种自动执行的软件设计技术都有一定缺陷,AutoIt 和按键精灵虽能模拟鼠标键盘的操作,但无法执行较复杂的条件判断。审核工作是条件判断多,操作较少的一种工作。

JS 功能强大,但是学习成本高,程序必须注入到已有的WEB页面中,而且与WEB 界面有强绑定,WEB 页面任何一点改动都会造成JS 的失效,调试和后续优化都会比较复杂和繁琐。

4 系统方案实现的关键技术研究

4.1 自动审批的系统的分析

自动审批方案要完成的工作,就是登录WEB 审批页面,查询是否有新上报的项目,如果有项目,就打开该项目,检查填写规范性,然后对工期时间进行规范性检查,再然后对项目金额进行规范性检查,最后对安全生产费费率和其它内容进行检查,然后根据检查的结果填写审批意见,并根据检查情况决定对该项目进行批准还是拒绝。

对一个项目审批的流程图如图1所示。

4.2 浏览器的自动控制

Selenium 是一个免费的控制浏览器运行的组件,能像真实用户所做的一样操作浏览器中WEB 页面的任何元素。其实现了WebDriver 的接口,提供了不同平台操作各类浏览器的接口,比如目前主流的:IE,Firefox,Chrome,Opera,Android 等各个平台的访问。Selenium 的核心是用 JavaScript 编写的,因此Selenium 可以在任何支持JS 脚本的浏览器中运行。

登录的示例代码如下:

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语言,对通信工程质量监督过程中进行辅助自动审批。

结果表明,采用自动化审批后,减少了人为审批中经常容易犯的错误,既大大提高了审批的及时率,也提高了工程建设部门的工作效率。

猜你喜欢
选项卡鼠标浏览器
Progress in Neural NLP: Modeling, Learning, and Reasoning
反浏览器指纹追踪
环球浏览器
鼠标滚轮隐藏在IE浏览器中的快捷操作
显示或隐藏“大纲”或“幻灯片”选项卡
超能力鼠标