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

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

需求

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

解决

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

属性->目标->选取器 (语言我用的中文) 里面写类似下列的规则:

<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, 注意是用双引号把两个字符串拼接在一起.

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