UIPath 获取网页元素做遍历点击的实现
參考: https://www.uipath.com/kb-articles/return-all-elements-of-a-table-using-find-all-children-activity
找了很久的資料才知道控件的用法.
需求
需求是在列表頁循環(huán)點(diǎn)擊每行的一個(gè)詳情按鈕判斷里面的內(nèi)容, 并做對(duì)應(yīng)的處理. 但是第一步的循環(huán)點(diǎn)擊就難住了. 下面給出解決方案.
解決
使用 UiPath.Core.Activities.FindChildren 這個(gè)控件.
在 屬性->目標(biāo)->選取器 (語言我用的中文) 里面寫類似下列的規(guī)則, 復(fù)制XPath和快速替換可以看我這篇(VSCode對(duì)中括號(hào)做匹配替換):
"<webctrl css-selector='body>div>div>div>table' tag='TABLE' />"說明: 其中 css-selector 相當(dāng)于網(wǎng)頁元素的 xpath, 即該元素在網(wǎng)頁結(jié)構(gòu)中的路徑. 注意連接符用 > 這里找到 table .
然后在 篩選 里, 使用下列規(guī)則篩選出自己要的元素集合. 我這里要點(diǎn)擊的那個(gè)詳情按鈕是 a 標(biāo)簽, 所以這樣篩選.
"<webctrl tag='A'/>"最后在 作用域 那里選擇: FIND_DESCENDANTS 這個(gè)選項(xiàng). 在輸出指定一個(gè) System.Collections.Generic.IEnumerable<UIPath.Core.UIElement> 類型的變量賦值. 這樣就找到了想要的所有元素了.
之后做遍歷循環(huán)如下:
使用控件為: UiPath.Core.Activities.ForEach .
在 屬性->TypeArgument 里設(shè)置每個(gè)遍歷的 item 為 UIPath.Core.UIElement 類型. 在輸入值那里填入上一步賦值的元素集合變量. 這樣就可以遍歷得到每一個(gè)元素了.
最后做點(diǎn)擊事件的步驟如下:
首先獲取元素的特征, 例如在我的需求里, 網(wǎng)頁上每一行的詳情按鈕元素中有一個(gè)重要的區(qū)分屬性是: trade_id, 因此我用分配控件單獨(dú)提取出每個(gè)元素的 trade_id.
trade_id = Convert.ToString(item.Get("trade_id"))然后使用單擊控件, 用 屬性->目標(biāo)->選取器 下面的規(guī)則:
"<webctrl aaname='詳情' tag='A' css-selector='body>div>div>div>table>tbody>tr>td>a' trade_id='" + trade_id + "'/>"說明: 同樣在 css-selector 中指點(diǎn)這個(gè)詳情按鈕的 xpath(在網(wǎng)頁結(jié)構(gòu)中的位置), 然后拼接 trade_id, 注意是用雙引號(hào)把兩個(gè)字符串拼接在一起.
這樣做就解決這個(gè)需求了.
應(yīng)小伙伴要求, 寫了簡(jiǎn)單的例子, 已上傳到 gitee, 下載 loop_click.xaml 這個(gè)文件放到 UIPath Studio 打開的項(xiàng)目路徑里即可, 打開后參照我上面的描述理解
倉庫位置 :
https://github.com/sancheo/UIPathExamples
https://gitee.com/geekqian/uipath_simple
拓展:
在打開的新標(biāo)簽頁操作請(qǐng)看這篇文章: https://blog.csdn.net/geekqian/article/details/119149744
總結(jié)
以上是生活随笔為你收集整理的UIPath 获取网页元素做遍历点击的实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java数组缩减
- 下一篇: IIS6,IIS7,IIS8的脚本自动安