UIPath 獲取網頁元素做遍歷點擊的實現

參考: 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, 注意是用雙引號把兩個字符串拼接在一起.

這樣做就解決這個需求了.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章