
做RPA项目的朋友应该都有这种经历页面上一排数据列表每一行后面都跟着“处理”“下载”“查看详情”之类的按钮业务方提的需求就一句话——“把所有行都点一遍”。如果列表只有三五行手工写几个Click也就凑合了但碰到几十上百行甚至分页还要翻页的这活就没法用固定选择器一个个写。UIPath里处理这类需求的正规路子就是“获取网页元素 遍历点击”用Find Children或者Find Elements把符合条件的元素一次性捞出来然后用For Each循环逐个点击。这篇文章就专门拆解这套流程的落地细节从选择器调试到循环配置再到点击失效、动态加载这些常见坑我都会结合实际操作讲清楚适合刚上手UIPath、或者已经写过几个流程但一碰到动态元素就头大的朋友参考。1. 需求拆解为什么“遍历页面元素”比“逐个写死点击”靠谱1.1 一个典型的重复性场景长什么样我先说一个最常见的场景。你打开一个后台管理系统页面上是一个订单表格表格里有五十条订单每条订单的最后有一列“操作”里面有“审核”“编辑”“删除”三个按钮。业务要求是把所有“审核”按钮依次点一遍每点一个就处理一个订单。如果手工录制UIPath会把每一个点击都录成一个独立的Click活动选择器里通常还带着绝对路径比如第一条是/body/div[1]/section[2]/div[3]/table/tbody/tr[1]/td[6]/button第二条是tr[2]/td[6]/button第三条又是tr[3]/td[6]/button。录到第20条你就会发现这活没法干了——不光代码冗余到爆炸只要列表顺序一变化或者某一行被条件过滤掉了后面所有选择器全部失效。所以这类需求的核心不是“怎么点一个按钮”而是“怎么把这一列同类型的按钮找出来然后统一处理”。用开发的话说就是把“硬编码”改成“批量遍历”。UIPath里对应的能力就是元素选择器的模糊匹配、Find Children与Find Elements活动以及For Each循环结构。这三个东西组合起来可以做到不管页面上有多少条数据不管每行的按钮在什么位置只要按钮的某几个关键属性一致就能全部拿到然后依次点击。1.2 两种实现思路的对比静态选择器 vs 动态遍历这里理清一个概念静态选择器就是写死一个完整路径比如上面那种tr[1]、tr[2]的写法只适用于“元素永远在同一个位置”的场景。而动态遍历是把选择器的范围缩小到“容器”再在这个容器里按属性过滤出所有子元素。UIPath里Find Children做的就是这件事它接受一个容器选择器和一个Filter子元素筛选条件返回的是容器内所有符合条件的UiElement对象集合。两者最直接的差别是容错性。静态选择器一旦遇到页面结构调整就死给你看动态遍历只看容器范围内的元素属性哪怕元素在外观上移动了位置、多了一行少了一行只要属性模板没变流程依然能跑。另一个差别是代码量。静态写法是一对一动态写法是一对多同样的功能后者只需要一个循环体就能覆盖所有同类元素。这个思路其实很像我们做接口自动化时的参数化把数据从用例逻辑里抽出来逻辑只跑一遍数据却可以轮换无数遍。RPA场景下的“数据”就是页面元素逻辑就是“点击并处理”遍历就是中间那根线把两者串起来。2. 工具选型与前置准备UI Explorer和选择器的基本盘2.1 UI Explorer你“看见”元素的唯一窗口在UIPath里写任何网页自动化第一个要养成的习惯就是打开UI Explorer去“检查”元素不要在代码里盲猜选择器。UI Explorer在Studio顶部工具栏的“UI Automation”菜单下启动后把鼠标移到网页上它会实时高亮你悬停的元素并在下方展示这个元素的完整“解剖结构”Tag、Attribute、Selector框、以及父级、兄弟节点。用UI Explorer看你需要的网页元素时主要看几个信息元素的Tag是button、div、a还是input、它身上携带的稳定属性比如id、class、title、>