經過努力了一天,解決無法動態抓取的問題,以下是我修改的部分。

流程改動內容與步驟對照變數宣告區(最外層 Sequence 變數管理)
改動:新增變數 jsonList,型態設為 System.Collections.Generic.List<System.String>,並設定預設值為 New List(Of String)。
目的:在流程一開始建立記憶體中的字串清單,用來累積儲存每一輪迴圈抓取到的專利 JSON 物件。
第 8 步:Assign(解析公開公告號)
System.Text.RegularExpressions.Regex.Match(String.Join(" ", CurrentRow.ItemArray), "TW\d+[A-Za-z]").Value
改動:將正則表達式從 TW\w+ 修正為 TW\d+[A-Za-z]。
目的:避免誤抓表格前方不可點擊的純數字「申請號」,確保抓出帶有英文字尾的「公開公告號」。
第 10 步:Click 'TW202636634A'(點擊專利超連結)
改動:將點擊方式由 Double(雙擊)修正為 Single(單擊)。
輸入模式設為 Simulate(模擬點擊)。
將固定案號的 Selector 改以動態變數 targetRow 進行相對列號定位:
"<webctrl tableRow='5' tag='TABLE' /><webctrl tag='A' tableRow='" + targetRow + "' />"。
目的:解決網頁連結被雙擊卡死、因固定案號導致後續迴圈找不到元件,以及點擊無法觸發網頁跳轉的問題。
第 11 步~第 16 步:Check App State、Get Text 諸多步驟與 Click 'INPUT(2)'(回上一頁按鈕)
改動:將這些活動的 Window Selector(視窗標題)由寫死的特定專利名稱,統一改為萬用字元
<html app='chrome.exe' title='*全球專利檢索系統' />。
目的:使流程在處理第 2 筆、第 3 筆不同案名的專利時,仍可正確辨識並鎖定瀏覽器分頁,防止逾時報錯。
第 17 步(原迴圈內):移除 Write Text File,新增 Invoke Method
改動:刪除原本在迴圈內部直接寫入檔案的 Write Text File,改為插入 Invoke Method 活動,調用清單的 Add 方法將每筆 jsonString 寫入 jsonList。
目的:避免每次迴圈執行時,新資料直接覆蓋舊檔案,導致最後只留存最後一筆專利的狀況。
第 18 步(For Each Row 迴圈外):新增 Write Text File (Combined JSON)
改動:在 For Each Row 迴圈結束的正下方加入 Write Text File,檔案路徑為 D:/RPA/專利資料.json,內容設定為:
"[" + vbCrLf + String.Join("," + vbCrLf, jsonList) + vbCrLf + "]"
目的:在全部專利資料收集完畢後,一次性組裝成標準的 JSON 陣列格式 [ {專利1}, {專利2}, {專利3} ] 並寫入檔案。
完成結果