前言
本章节提供的截图和数据都是测试数据,如有雷同实属巧合,特此声明
本章节主要讲解循环在网页下的使用,以及在相关场景下的应用;循环使用的场景很多,例如有表格,分页,列表,下拉框循环;List循环;文件夹/文件循环;重试逻辑循环等等
本章节使用浏览器:Chrome浏览器(使用Chrome进行自动化操作时需先开启插件)
本章节内容如下:
• 循环组件(For,While)
• 循环表格
• 循环分页
• 循环列表
• 循环下拉框
一、循环组件
在苍穹RPA设计器中提供了两个循环,分别是For和While
1、For循环
For循环不需要指定下标和循环条件,会自动遍历集合的每一项,当集合项遍历完成后,循环会自动结束
集合:需要遍历的数据集合,常用的是List
过程:循环体要操作的步骤,遇到Break组件时会结束循环
元素:遍历集合时生成的下标项引用名称,需自定义名称(例如:row
、column、element、file、index),相当于List[i](其中i为1,2,3……n,n是集合的长度)。定义好名称之后可以在过程中对其进行访问(例如:row[“标题”])
2、While循环
While循环需要指定循环的条件,当条件满足时会进入循环体,当条件不满足时会结束循环
条件:布尔值,支持变量(例如index==1,index>0,True,False,text==”内容”)
过程:循环体要操作的步骤,遇到Break组件时会结束循环
二、循环表格
网页的表格指的是table元素(结构一般包括table>thead|tbody>tr>th|td)
流程思路:拾取表格组件+for循环,
业务要求:获取表格数据,并去除汇总行
页面如下
Html元素如下
流程图如下
输出结果如下
流程详解:
• 使用“拾取表格”组件,选中表格(注:拾取表格组件只能用于网页的table元素)
• 使用“DataFrame转List”将上一个步骤的df转成list(直接连线即可)
• 使用For循环对list进行遍历,并在循环体内添加一个判断:row[0]!='本页汇总:'并在真的节点上进行输出
三、循环分页
在获取数据表格时,往往会存在分页
流程思路:可使用While循环+IF判断处理(是否最后一页)
页面如下:
业务要求:获取每一页的表格
流程图如下:
流程步骤详解:
• 第一步:While循环,并把条件设置为True
• 第二步:添加序列,分两条分支:表格处理、分页处理(注:序列的执行顺序是从上到下)
• 第三步:设置分页退出条件,上图使用的是“元素是否存在”来判断是否已经到最后一页,最后一页的下一页元素的属性会有所不同,有些是灰色的,有些不可见,可以根据这些元素特征来判断。
四、列表循环
什么是列表: 展现的显示结构是有规律的(横向排列、纵向排列)的元素(例如:div,dl-dd,ul-li,select-option等),这里以ul-li做为讲解。
业务要求:对ul底下的所有li做一次鼠标点击(一般在查询页面会有这种需求,要求遍历整个列表的数据)
页面展示如下:
Html展示如下:
流程思路:
• 第一步:拾取两个li元素,并观察元素css-selector的差异
从差异可以看出:第一个li最后一段css表达式为Li:nth-of-type(1),第二个li最后一段css表达式为Li:nth-of-type(2),以此类推,第N个li最后一段css表达式为Li:nth-of-type(n)
nth-of-type表示的含义如下:
更多详情参考链接:https://www.w3school.com.cn/cssref/css_selectors.asp
• 第二步:声明一个变量lv_index,默认值为1
• 第三步:添加一个While循环,并设置条件为True
• 第四步:添加一个元素是否存在和IF分支,条件为True时进行鼠标点击,并将lv_index加1;条件为False时,终止循环(“元素是否存在”和“鼠标点击”的属性表需要使用变量lv_index代替最后一个可变的数字)
流程图如下:
五、列表循环(进阶)
上一个列表循环,需要不停的判断元素是否存在,会造成流程运行时间的增加,因此做出以下优化
流程图如下:
流程步骤详解:
• 第一步:使用“获取控件html”获取ul元素的outerhtml内容
• 第二步:使用“代码块”获取html里li的内容(记为lv_list),代码块内容如下:
获取到的内容(类型:List)如下:
正则表达式参考链接:https://www.runoob.com/python/python-reg-expressions.html
• 第三步:添加一个For循环,并设置集合为range(1,len(lv_list)+1)(注:range默认的起始坐标为0,结束坐标为设置的值-1,所以这里起始坐标需要改成1,结束坐标需要加1)
• 第四步:将For循环的元素index传到li元素的属性表里
六、循环下拉框
什么是下拉框:标签为Select的元素为标准下拉框(有些别的元素长得像下拉框,其实是列表)
业务需求:对下拉框里的每一项进行选中
页面展示如下:
Html元素如下:
流程思路:使用代码块获取Select元素底下所有option的value或者text,使用for循环对select元素数量进行value或者text的设置(根据需求而定,注意text可能存在相同,最好是设置value)
流程图如下:
流程详解如下:
第一步:获取Select的html元素
第二步:使用正则表达式获取html里option的value
第三步:添加一个For循环,循环体使用Select组件设置value值
选择模式:val为value值,text为文本,index为序号
选项:设置的内容(optionValue是For循环里定义的元素)