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>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, 注意是用雙引號把兩個字符串拼接在一起.
這樣做就解決這個需求了.
應小伙伴要求, 寫了簡單的例子, 已上傳到 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
總結
以上是生活随笔為你收集整理的UIPath 获取网页元素做遍历点击的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java数组缩减
- 下一篇: IIS6,IIS7,IIS8的脚本自动安