UIPath 获取网页元素做遍历点击的实现

参考: https://www.uipath.com/kb-articles/return-all-elements-of-a-table-using-find-all-children-activity

找了很久的资料才知道控件的用法.

需求

需求是在列表页循环点击每行的一个详情按钮判断里面的内容, 并做对应的处理. 但是第一步的循环点击就难住了. 下面给出解决方案.

解决

使用 UiPath.Core.Activities.FindChildren 这个控件.

属性->目标->选取器 (语言我用的中文) 里面写类似下列的规则, 复制XPath和快速替换可以看我这篇(VSCode对中括号做匹配替换):

"<webctrl css-selector='body&gt;div&gt;div&gt;div&gt;table' tag='TABLE' />"

说明: 其中 css-selector 相当于网页元素的 xpath, 即该元素在网页结构中的路径. 注意连接符用 &gt; 这里找到 table .

然后在 筛选 里, 使用下列规则筛选出自己要的元素集合. 我这里要点击的那个详情按钮是 a 标签, 所以这样筛选.

"<webctrl tag='A'/>"

最后在 作用域 那里选择: FIND_DESCENDANTS 这个选项. 在输出指定一个 System.Collections.Generic.IEnumerable<UIPath.Core.UIElement> 类型的变量赋值. 这样就找到了想要的所有元素了.

之后做遍历循环如下:

使用控件为: UiPath.Core.Activities.ForEach .

属性->TypeArgument 里设置每个遍历的 itemUIPath.Core.UIElement 类型. 在输入值那里填入上一步赋值的元素集合变量. 这样就可以遍历得到每一个元素了.

最后做点击事件的步骤如下:

首先获取元素的特征, 例如在我的需求里, 网页上每一行的详情按钮元素中有一个重要的区分属性是: trade_id, 因此我用分配控件单独提取出每个元素的 trade_id.

trade_id = Convert.ToString(item.Get("trade_id"))

然后使用单击控件, 用 属性->目标->选取器 下面的规则:

"<webctrl aaname='详情' tag='A' css-selector='body&gt;div&gt;div&gt;div&gt;table&gt;tbody&gt;tr&gt;td&gt;a' trade_id='" + trade_id + "'/>"

说明: 同样在 css-selector 中指点这个详情按钮的 xpath(在网页结构中的位置), 然后拼接 trade_id, 注意是用双引号把两个字符串拼接在一起.

这样做就解决这个需求了.

应小伙伴要求, 写了简单的例子, 已上传到 gitee, 下载 loop_click.xaml 这个文件放到 UIPath Studio 打开的项目路径里即可, 打开后参照我上面的描述理解

仓库位置 :
https://github.com/sancheo/UIPathExamples
https://gitee.com/geekqian/uipath_simple
拓展:
在打开的新标签页操作请看这篇文章: https://blog.csdn.net/geekqian/article/details/119149744

  • 4
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值