參考: 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>div>div>div>table' tag='TABLE' />
說明: 其中 css-selector
相當於網頁元素的 xpath
, 即該元素在網頁結構中的路徑. 注意連接符用 >
這裏找到 table
.
然後在 篩選
裏, 使用下列規則篩選出自己要的元素集合. 我這裏要點擊的那個詳情按鈕是 a
標籤, 所以這樣篩選.
"<webctrl tag='A'/>"
最後在 作用域
那裏選擇: FIND_DESCENDANTS
這個選項. 在輸出指定一個 System.Collections.Generic.IEnumerable<UIPath.Core.UIElement>
類型的變量賦值. 這樣就找到了想要的所有元素了.
之後做遍歷循環如下:
使用控件爲: UiPath.Core.Activities.ForEach
.
在 屬性->TypeArgument
裏設置每個遍歷的 item
爲 UIPath.Core.UIElement
類型. 在輸入值那裏填入上一步賦值的元素集合變量. 這樣就可以遍歷得到每一個元素了.
最後做點擊事件的步驟如下:
首先獲取元素的特徵, 例如在我的需求裏, 網頁上每一行的詳情按鈕元素中有一個重要的區分屬性是: trade_id
, 因此我用分配控件單獨提取出每個元素的 trade_id
.
trade_id = Convert.ToString(item.Get("trade_id"))
然後使用單擊控件, 用 屬性->目標->選取器
下面的規則:
"<webctrl aaname='詳情' tag='A' css-selector='body>div>div>div>table>tbody>tr>td>a' trade_id='" + trade_id + "'/>"
說明: 同樣在 css-selector
中指點這個詳情按鈕的 xpath
(在網頁結構中的位置), 然後拼接 trade_id
, 注意是用雙引號把兩個字符串拼接在一起.
這樣做就解決這個需求了.