需求内容

根据表格中给出的信息(提供了机构名称、机构代码、用户信息、具体操作等),选择系统管理 → 用户信息管理 → 用户维护,点击用户所在的机构,在机构中选择需调整的用户,进行相应的增删改操作。

关键步骤截图如下:

例如,表格给出的信息是 [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 案例:银行综合对账系统权限更改中的难点解决的更多相关文章

  1. 银行综合储蓄业务系统,水平为学了一年C语言

    银行综合储蓄业务系统 #include <stdio.h> #include<string.h> int acccunt = 0; char name[10],pw[10]; ...

  2. Android开发之深入理解Android 7.0系统权限更改相关文档

    http://www.cnblogs.com/dazhao/p/6547811.html 摘要: Android 6.0之后的版本增加了运行时权限,应用程序在执行每个需要系统权限的功能时,需要添加权限 ...

  3. Python 小案例实战 —— 简易银行存取款查询系统

    Python 小案例实战 -- 简易银行存取款查询系统 涉及知识点 包的调用 字典.列表的混合运用 列表元素索引.追加 基本的循环与分支结构 源码 import sys import time ban ...

  4. 26、生鲜电商平台-RBAC系统权限的设计与架构

    说明:根据上面的需求描述以及对需求的分析,我们得知通常的一个中小型系统对于权限系统所需实现的功能以及非功能性的需求,在下面我们将根据需求从技术角度上分析实现的策略以及基于目前两种比较流行的权限设计思想 ...

  5. Android 6.0 开发人员对系统权限的使用与练习(Permissions Best Practices)

    Permissions Best Practices 在安装的过程中,用户非常easy忽略权限请求. 假设一个用户相应用感觉沮丧或者操心泄漏个人信息,那么这些用户就会不用他或者卸载它. 怎样规避这个问 ...

  6. Java生鲜电商平台-商家支付系统与对账系统架构实战

    Java生鲜电商平台-商家支付系统与对账系统架构实战 说明:关于生鲜电商平台,支付系统是连接消费者.商家(或平台)和金融机构的桥梁,管理支付数据,调用第三方支付平台接口,记录支付信息(对应订单号,支付 ...

  7. Java生鲜电商平台-RBAC系统权限的设计与架构

    Java生鲜电商平台-RBAC系统权限的设计与架构 说明:根据上面的需求描述以及对需求的分析,我们得知通常的一个中小型系统对于权限系统所需实现的功能以及非功能性的需求,在下面我们将根据需求从技术角度上 ...

  8. linux系统权限(基本权限)

    linux的系统权限:r--  100 4-w- 010 2--x  001 1 [root@localhost ~]# ll -d dir drwxrwxrwx root root Nov : di ...

  9. 解析大型.NET ERP系统 权限模块设计与实现

    权限模块是ERP系统的核心模块之一,完善的权限控制机制给系统增色不少.总结我接触过的权限模块,以享读者. 1 权限的简明定义 ERP权限管理用一句简单的话来说就是:谁 能否 做 那些 事. 文句 含义 ...

随机推荐

  1. js获取数组最大值或最小值

    数组对象arr中属性num最大值最小值 // 最大值 Math.max.apply(Math,arr.map(item => { return item.num })) arr.sort((a, ...

  2. <String> 161 358

    161. One Edit Distance 1. 两个字符串的长度之差大于1,直接返回False. 2. 两个字符串的长度之差等于1,长的那个字符串去掉一个字符,剩下的应该和短的字符串相同. 3. ...

  3. python爬虫执行js代码-execjs

    一.安装模块 pip install PyExecJS execjs会自动使用当前电脑上的运行时环境(建议用nodejs,与Phantomjs) 二.简单的使用 import execjs js_ob ...

  4. OpenCV:图像的普通二值化

    首先我们来看看图像二值化的过程,opencv一共有好几种不同的二值化算法可以使用,一般来说图像的像素,亮度等条件如果超过了某个或者低于了某个阈值,就会恒等于某个值,可以用于某些物体轮廓的监测: 导包: ...

  5. Python日期计算

    Python源代码如下: # -*- coding: UTF-8 -*- """ 简述:要求输入某年某月某日 提问:求判断输入日期是当年中的第几天? Python解题思路 ...

  6. Hive静态分区和动态分区,对应Mysql中的元数据信息

    静态分区: 手动指定分区加载数据,就是常说的静态分区的使用.但是在日常工作中用的比较多的是动态分区. 创建: hive> create table order_mulit_partition( ...

  7. python连数据库制作音乐软件

    import pymysql conn = pymysql.connect(host="localhost",user="root",password=&quo ...

  8. linux 下使用 tc 模拟网络延迟和丢包-使用 linux 模拟广域网延迟 - Emulating wide area network delays with Linux

    tc 是linux 内置的命令:使用man pages 查看 我们看到,其功能为 show / manipulate traffic control settings,可对操作系统进行流量控制: ne ...

  9. C/C++ 变量的本质分析

    1. 程序通过变量来申请和命名内存空间. int a=0; //申请一个大小为int型的内存空间,这个内存空间取名叫a,申请的内存空间里存储0 2. 可以通过变量名访问变量的内存空间. 3. 修改变量 ...

  10. qt用于图片显示的窗口

     用于图片显示的窗口 国产化