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权限管理用一句简单的话来说就是:谁 能否 做 那些 事. 文句 含义 ...
随机推荐
- 2.华为路由交换技术_TCP/IP参考模型
1.应用层 2.传输层(主机到主机层) 3.网络层(IPV4) ARP协议:地址解析协议 原理:源终端A想要发送信息给目的终端B,已知B的IP地址,需要获取B的MAC地址.首先它会在局域网广播,一般情 ...
- E-factory
E-factory为生成XML和HTML提供了一种简单而紧凑的语法 # coding:utf-8 from lxml.builder import E def CLASS(*args): # clas ...
- @Transactional注解失效
一.特性 先来了解一下@Transactional注解事务的特性吧,可以更好排查问题 1.service类标签(一般不建议在接口上)上添加@Transactional,可以将整个类纳入spring事务 ...
- 为什么 JavaScript 中 0.1+0.2 不等于 0.3 ?
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/2kea7-jACCJmSYBQAwXyIg作者:刘洋 在 js 中进行数学的运算时,会出现0. ...
- Java:程序不过是几行代码的集合
程序不过是几行代码的集合.就像下面这样: public class Test { public static void main(String[] args) { System.out.println ...
- Django入门必知必会操作
一.Django基础必备三件套 HttpRseponse 内部传入一个字符串参数,返回给浏览器. 在app目录下的views.py添加函数,添加函数之前必须在urls.py添加函数对应关系,否则访问不 ...
- 双链表算法原理【Java实现】(八)
前言 前面两节内容我们详细介绍了ArrayList,一是手写实现ArrayList数据结构,而是通过分析ArrayList源码看看内置实现,关于集合内容一如既往,本节课我们继续学习集合LinkedLi ...
- [Spring cloud 一步步实现广告系统] 4. 通用代码模块设计
一个大的系统,在代码的复用肯定是必不可少的,它能解决: 统一的响应处理(可以对外提供统一的响应对象包装) 统一的异常处理(可以将业务异常统一收集处理) 通用代码定义.配置定义(通用的配置信息放在统一的 ...
- .NET Core C# 中级篇2-7 文件操作
.NET Core CSharp 中级篇2-7 本节内容为文件操作 简介 文件操作在我们C#里还是比较常见的,例如我们读取Excel.Txt文件的内容,在程序中,这些文件都是以流的方式读取进入我们内存 ...
- javaWeb核心技术第十四篇之easyui
网站是分为网站的前台和网站的后台. 前台--给用户看的 例如:商城 后台--给管理员看的 例如:商城后台 目的:用来添加维护数据 BootStrap:jsp 页面显示,效果好,美观,适合作为用户界面. ...