Web Automation Tools

網頁自動化訓練工具集

選擇並匯入指定來源檔案到工作資料夾,並可指定在工作資料夾內的檔名。其中來源檔案欄位可以夾帶 %FILENAME% 變數,執行時會以工作資料夾內檔名為 FILENAME 的 TXT 檔案內容取代,達到動態指定的效果。

選擇一個技能,插入流程中成為一個步驟。當 EMILY 機器人執行到這個步驟,會將這個子技能中的所有步驟載入依序執行。勾選使用新瀏覽器執行子技能會在執行時期開啟一個新瀏覽器視窗執行選擇的子技能,而選擇的子技能也能有獨立的循環工作;若不勾選則子技能會執行在同一個瀏覽器視窗中,也需遵守禁止巢狀循環工作的規則。放棄插入子技能只要按鍵盤 ESC 鍵即可。

循環工作提供循環表格工作循環條件工作兩種方式,需遵守禁止巢狀循環工作的規則

點擊循環工作並選擇 CSV 格式檔案就會進入循環表格工作,表格中第一列資料的每個欄位值會被存入工作資料夾 TXT 檔,檔案命名方式為 row-columnName.txt,使用者可以存取這些存放欄位值的 TXT 檔案,並應用於循環內的流程步驟中,完成第一列資料的循環步驟錄製後,EMILY.RPA 會於執行模式下依照 CSV 每列資料依序執行循環流程一次。

若選擇的是 TXT 檔案則會進入循環條件工作,於循環內錄製的流程步驟在執行前會檢查指定的 TXT 檔案內容是否符合設定的條件,一旦不符合條件循環工作就會終止循環,因此使用者在訓練循環內流程步驟時,必須依照想要達成的規則明確的改寫 TXT 檔案內容。

讓瀏覽器會到訓練模式首頁。

將瀏覽器中游標所在元素的文字內容全部選取。

將瀏覽器中被選取文字拷貝下來存入剪貼簿,同時也可以存檔在工作資料夾。

將剪貼簿中的文字貼到瀏覽器中游標所在位置。

選擇一個 TXT 檔案,在瀏覽器中游標所在位置插入檔案文字內容。

在瀏覽器中選擇網頁目標節點,撰寫 JavaScript 腳本程式對其存取,通常用於細部操作網頁元素或是彈性擷取網頁資訊。選擇到的可能目標節點以腳本中變數 nodes[] 陣列表示,並支援 lodash.jsmoment.js 工具函式庫以及 read(filename, encoding='utf8'), write(filename, content), remove(filename), repeat(true, delay=3000ms) 等工作資料夾處理函式。

// 針對新聞網頁的新聞列表,擷取每則新聞摘要內容
nodes.forEach((node, index) => {
  write('news-' + index + '.txt', node.innerText)
})

若想要執行腳本並等到腳本中的非同步函式完成才繼續下一個自動化步驟,可以再腳本中回傳 Promise 物件如下:

// scroll 到頁面下方,頁面資料需要幾秒鐘時間才能載入完全
document.querySelector("div.bottom").scrollIntoView()

// 回傳一個 Promise 物件,下一個自動化步驟會等到 Promise 解決(resolve)再繼續
return new Promise((resolve) => {
  setTimeout(() => {
    write("page.txt", document.body.innerText)
    document.querySelector("a.nextPage").click()
    resolve()
  }, 5000)
})

在腳本中也可以識別碼叫用其他技能,被叫用的技能會執行在目前的工作資料夾,並且會開啟新的瀏覽器視窗執行,因此同樣不受禁止巢狀循環工作的規則限制:

// run() API 為非同步函式,回傳一個 Promise 物件,也可以串接
return run("96fcb9b5-e209-4051-b502-ffd142e31a87")
.then(() => run("bb0a7f40-47e8-40ad-a7f9-d839ee8bcc5d"))

或是在腳本中下載檔案到工作資料夾:

// download(url, filename) API 為非同步函式,回傳一個 Promise 物件
return download("https://example.com/pricing.pdf", "price.pdf")

如果想利用腳本操作滑鼠,可以利用以下同步函式:mouseEnter(node), mouseMove(node, x, y), mouseLeave(node), mouseDown(node, x, y), mouseUp(node, x, y), mouseClick(node), mouseDblClick(node), mouseContextmenu(node, x, y)

// simulate mousedown and mouseup
let node = document.querySelector("BUTTON#send")
mouseDown(node)
mouseUp(node)

也可以利用 DA mouse 非同步函式實際控制滑鼠或鍵盤:

// control mouse actions
return mouse.enable(true)
.then(() => mouse.move(nodes[0], 0, 0))
.then(() => mouse.clickLeft())
.then(() => mouse.enable(false))
// control keybaord actions
await keyboard.enable(true) // enable(true) 會將瀏覽器視窗放誤觸蒙層拉到桌面最前景
await keyboard.type('hello') // 循序發送 'h' 'e' 'l' 'l' 'o' 五鍵
await keyboard.tab() // 發送 TAB 鍵
await keyboard.escape() // 發送 ESC 鍵
await keyboard.backspace() // 發送 BACK SPACE 鍵
await keyboard.enter() // 發送 ENTER 鍵
await keyboard.enable(false)

針對需要清除瀏覽器 session 資料(例如 cookie)的應用場景,可以使用 clearSessionData() 函式,需注意 clearSessionData() 是非同步函式

// clear browser session data
return clearSessionData()

如果希望這段腳本在下一個步驟前重複被執行一次,可以使用 repeat() 函式,這個函式會在流程的下一個步驟前再插入這段執行腳本,可以在腳本中任何地方呼叫:

// 如果在現在網頁中找到「下一頁」按鈕,就在5秒後重新執行腳本
let btn = document.querySelector('Button#nextPage')
if (btn) {
  repeat(true, 5000)
  // 0.5秒後才點擊下一頁,避免腳本內還有需要執行的工作
  _.delay(() => btn.click(), 500)
}
// ...

將現在瀏覽器中的頁面輸出成 PDF 格式檔案或輸出到印表機。

告訴 EMILY 機器人在這個步驟等待指定的秒數後再繼續執行。

刪除 EMILY 機器人紀錄學習的步驟。

以滑鼠在瀏覽器頁面中選擇目標節點並擷取指定的內容種類並存成本機檔案。點擊到的節點會標識成紅色,使用者可以在 EMILY 主視窗以標準的 CSS Selector 修正目標節點路徑。

選擇保存文字內容時,若選取節點路徑為 HTML Table 標籤時,將存檔名稱的副檔名命名為小寫 .csv 時 EMILY 機器人會自動將網頁中表格內容轉換成 CSV 格式。

發送 ENTER、BACKSPACE、ESCAPE、TAB 四種按鍵(其他按鍵可以由插入文字或鍵盤直接輸入)。

以滑鼠在瀏覽器頁面中選擇目標節點作為確認步驟並指定逾時秒數,在執行時期 EMILY 機器人會等到頁面出現選擇節點才繼續,否則以錯誤狀態結束,通常用在動態網頁的操作上。

以滑鼠在瀏覽器頁面中選擇目標節點並輸入提示文字,在執行時期 EMILY 機器人到了這個步驟會暫停自動執行,並以紅色標識節點,同時主視窗顯示提示文字來引導用戶接手操作頁面,完成後點擊「完成了」讓機器人繼續自動執行。

修改工作資料夾中的檔案名稱。來源檔案欄位可以夾帶 %FILENAME% 變數,執行時會以工作資料夾內檔名為 FILENAME 的 TXT 檔案內容取代,達到動態指定的效果。

以 Windows 檔案總管或 Mac Finder 打開工作資料夾,可用來檢查目前執行暫存的資料。

Last updated