RPA 案例:银行综合对账系统权限更改中的难点解决
需求内容
根据表格中给出的信息(提供了机构名称、机构代码、用户信息、具体操作等),选择系统管理 → 用户信息管理 → 用户维护,点击用户所在的机构,在机构中选择需调整的用户,进行相应的增删改操作。
关键步骤截图如下:
例如,表格给出的信息是 [01001] 分行营业部的某个员工需要进行修改操作,那么需要在目录中依次点击
[00000]银行 → [FR001总行] → [01]常州分行 → [010010]常州分行营业部 → [01001]分行营业部
然后在右侧的用户信息表中选中相应员工进行修改操作
难点说明
通过 F12 查看页面元素,可以看到下图中红框部分只有 [00000 银行] 这一个节点源码
点击 [00000 银行] 前面的’+’号,再次查看源码,发现多了下图红框中的内容,也就是说,这棵银行路径树的源码是根据鼠标点击动态加载的,我们无法提前知道所有的源码。
深入观察
继续点击并不断观察页面元素的变化,我们得到一些规律:
1. 每次点击后都会给当前节点下的所有子节点分配 id,id 号码是在父节点以及父节点的兄弟节点都依次标完号以后按顺序进行标号。下图详细解释了这种分配 id 的模式,[00000]银行的 id 为 1 号,我们先点击它,得到的三个子节点 [FR001] 总行、[FR002]大丰村镇银行、[FR003]上海村镇银行分别分配为 2、3、4 号;然后我们点击 [FR003] 上海村镇银行,得到的一个子节点 [03] 上海村镇银行分配为 5 号;我们点击 [03] 上海村镇银行,会得到四个子节点(注意:[03888]上海清算中心和 [03999] 上海管理机构也是子节点),分别分配 6、7、8、9 号,以此类推。如果每次点击的顺序不一样,那么最终的节点 id 号也会完全不同。
2. 带有文件夹标记的节点,需要对前面的’+‘号执行点击操作,如果点击的是 a 标签对应的元素,即上图中的第一个红框,将不会弹出下面的子节点。且’+‘号对应的元素比较好找,只要找到 a 标签对应的元素节点,然后顺藤摸瓜找到它所对应的父节点 li 下的第一个 span 标签的元素,就是我们要找的’+’号。
3. 每一个节点元素的 class 属性很容易理解,在根节点的元素([00000] 银行)为 level0,下面的子节点([FR001] 总行、[FR002] 大丰村镇银行、[FR003] 上海村镇银行)都为 level1,以此类推。
解决思路
根据第一个观察,我们可以设计一个动态标号算法,假设我们已经提前知道具体的点击顺序,那么就可以计算出按照这个点击顺序得到的每个节点的 id 所分配的号码是多少,然后得到每一次点击的 xpath 代码,通过 xpath 查找到元素后依次执行 click() 方法即可。但这种算法的难度较大,可以作为思考题。结合第二和第三个观察,我们可以设计一个更为简便的算法,同样假设已经提前知道了具体的点击顺序,并且依次存储在一个列表中,由于点击顺序一定是按照一层一层的节点往下的结构,所以这个列表中的每一个元素的 class 属性也一定是按照 level0、level1 的顺序排列,再结合一开始给定的机构名称、机构代码信息,我们就可以定位到所有的 a 标签对应的元素,再结合第二个观察,就能找到需要点击的’+’号。需要注意的是,最后用户所在的机构一定是不带有文件夹标记的节点,直接对定位到的 a 标签对应的元素执行点击操作即可。
运行片段
以 [02031] 为例,运行函数并依次执行点击操作,效果如下:
RPA 案例:银行综合对账系统权限更改中的难点解决的更多相关文章
- 银行综合储蓄业务系统,水平为学了一年C语言
银行综合储蓄业务系统 #include <stdio.h> #include<string.h> int acccunt = 0; char name[10],pw[10]; ...
- Android开发之深入理解Android 7.0系统权限更改相关文档
http://www.cnblogs.com/dazhao/p/6547811.html 摘要: Android 6.0之后的版本增加了运行时权限,应用程序在执行每个需要系统权限的功能时,需要添加权限 ...
- Python 小案例实战 —— 简易银行存取款查询系统
Python 小案例实战 -- 简易银行存取款查询系统 涉及知识点 包的调用 字典.列表的混合运用 列表元素索引.追加 基本的循环与分支结构 源码 import sys import time ban ...
- 26、生鲜电商平台-RBAC系统权限的设计与架构
说明:根据上面的需求描述以及对需求的分析,我们得知通常的一个中小型系统对于权限系统所需实现的功能以及非功能性的需求,在下面我们将根据需求从技术角度上分析实现的策略以及基于目前两种比较流行的权限设计思想 ...
- Android 6.0 开发人员对系统权限的使用与练习(Permissions Best Practices)
Permissions Best Practices 在安装的过程中,用户非常easy忽略权限请求. 假设一个用户相应用感觉沮丧或者操心泄漏个人信息,那么这些用户就会不用他或者卸载它. 怎样规避这个问 ...
- Java生鲜电商平台-商家支付系统与对账系统架构实战
Java生鲜电商平台-商家支付系统与对账系统架构实战 说明:关于生鲜电商平台,支付系统是连接消费者.商家(或平台)和金融机构的桥梁,管理支付数据,调用第三方支付平台接口,记录支付信息(对应订单号,支付 ...
- Java生鲜电商平台-RBAC系统权限的设计与架构
Java生鲜电商平台-RBAC系统权限的设计与架构 说明:根据上面的需求描述以及对需求的分析,我们得知通常的一个中小型系统对于权限系统所需实现的功能以及非功能性的需求,在下面我们将根据需求从技术角度上 ...
- linux系统权限(基本权限)
linux的系统权限:r-- 100 4-w- 010 2--x 001 1 [root@localhost ~]# ll -d dir drwxrwxrwx root root Nov : di ...
- 解析大型.NET ERP系统 权限模块设计与实现
权限模块是ERP系统的核心模块之一,完善的权限控制机制给系统增色不少.总结我接触过的权限模块,以享读者. 1 权限的简明定义 ERP权限管理用一句简单的话来说就是:谁 能否 做 那些 事. 文句 含义 ...
随机推荐
- mysql数据库创建用户、赋权、修改用户密码
创建新用户 create user lisi identified by '123456'; 查看创建结果: 授权 命令格式:grant privilegesCode on dbName.tableN ...
- MyBatis的ResultMapping和ResultMap
MyBatis的ResultMapping和ResultMap Effective java 第3版中描述的Builder模式 Java设计模式14:建造者模式 2个类都使用了Builder来构建对象 ...
- dom元素的tabindex属性介绍及在vue项目中的应用
dom元素的tabindex属性介绍及在vue项目中的应用 tabindex属性作用 让普通dom元素变为可聚焦的元素 让普通dom元素可以参与顺序键盘导航(通常使用Tab键,因此得名). tabin ...
- Windows10安装ubuntu18.04双系统教程
写在前面:本教程为windows10安装ubuntu18.04(64位)双系统教程,是我多次安装双系统的经验总结,安装方法同样适用于ubuntu16.04(64位).为了直观和易于理解,我会尽量图文并 ...
- JeeSite | 保存信息修改记录封装
前面写过两篇关于“保存信息修改记录”的内容,分别如下: JeeSite | 保存信息修改记录 JeeSite | 保存信息修改记录续 回顾 第一篇文章通过类字段的比较返回一个有字段值不 ...
- Web安全测试学习笔记-DVWA-图片上传
很多网站都有上传资源(图片或者文件)的功能,资源上传后一般会存储在服务器的一个文件夹里面,如果攻击者绕过了上传时候的文件类型验证,传了木马或者其他可执行的代码上去,那服务器就危险了. 我用DVWA的文 ...
- Java 后台请求第三方系统接口详解
//调用第三方系统接口 PrintWriter out = null; BufferedReader in = null; JSONObject jsonObject = null; Closeabl ...
- 这十个Python常用库,学习Python的你必须要知道!
想知道Python取得如此巨大成功的原因吗?只要看看Python提供的大量库就知道了 包括原生库和第三方库.不过,有这么多Python库,有些库得不到应有的关注也就不足为奇了.此外,只在一个领域里的工 ...
- GO基础之结构体
1 .什么是结构体 GO语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型.结构体是由一系列具有相同类型或不同类型的数据构成的数据集合. 2.什么是实例化? Go结构体的 ...
- VirtualBox创建的Debian虚拟机与Windows宿主共享文件
术语: 1.VM:虚拟机 步骤: 1.在Windows10上下载并安装VirtualBox6.0.8(时间:2019/5/30),下载地址:https://download.virtualbox.or ...