DA 桌面自動化 II
計算機.csv
op1,op2,op
“[1,3]”,“[3,3]”,+
“[1,1]”,“[1,1]”,x
“[2,3]”,“[3,3]”,-
獲得螢幕解析度資訊
let size = await api.screen.size();
console.log(size);
尋找畫面中的截圖,並返回截圖座標資訊
let found = await api.screen.find("crop-截圖.png");
在接下來的10秒中,等待畫面上的截圖出現
let found = await api.screen.waitFor("crop-截圖.png",10000);
在接下來的10秒中,等待畫面上的特定範圍有截圖出現
let found = await api.screen.waitFor("crop-截圖.png",10000,{"left":0,"top":420,"width":500,"height":420});
await api.mouse.move(found.left, found.top); //移動滑鼠到找到的位置
在尋找截圖的時候,使用信心程度 confidence
let found = await api.screen.waitFor("crop-截圖.png",5000
, { "confidence": 0.98 }
);
if(found){
await api.mouse.move(found.left, found.top); //移動滑鼠到找到的位置
} else {
console.log("not found");
}
開啟工作資料夾檔案
await api.shell.openPath('output.csv');
開啟任意檔案
await api.shell.openPath('/Users/bossp/Desktop/Emily 課程介紹懶人包.txt');
開啟檔案總管並選取檔案
await api.shell.showItemInFolder('/Users/bossp/Desktop/Emily 課程介紹懶人包.txt');
- 開啟檔案總管到指定目錄
await api.shell.showItemInFolder('/Users/bossp/Desktop/');
將檔案移至資源回收桶
await api.shell.trashItem('/Users/emily/Desktop/input.xlsx');
用瀏覽器開啟網頁連結
await api.shell.openExternal('https://google.com');
練習:開啟計算機/小算盤
MAC
await api.shell.openPath('/System/Applications/Calculator.app');
WIN
await api.shell.openPath('C:\\Windows\\System32\\calc.exe');
寫入三筆資料到 CSV 檔
await api.writeCSV('計算機.csv', [{ op1:[1,3], op2:[3,3], op:'+'}, { op1:[1,1], op2:[1,1], op:'x' }, { op1:[2,3], op2:[3,3], op:'-' }]);
讀 CSV檔,分隔符號為逗點,讀取表頭須從檔頭略過0列
let calc_rows = await api.readCSV('計算機.csv', ',', 0)
console.log(calc_rows);
範例:DA 完整範例-自動化操作計算機,並取回運算結果,存檔
MAC
// step1. 開啟計算機
await api.shell.openPath('/System/Applications/Calculator.app');
await api.sleep(2000);
let calc_rows = await api.readCSV('計算機.csv', ',', 0);
console.log(calc_rows);
let crop_mapping = {
'1': 'crop-75b8da04123735dd7d0af3f2271efd5d4d14621fc191f07c86cfdfb6685d061a.png',
'2': 'crop-e02060438929be8bf2f18e735a7193411ec64bd2fefbb3ab0c971ea1f1d4d36a.png',
'3': 'crop-6c75ea23ad55160f1113cbb50eb4009e3756cdd156817e4b0011a285d62d072f.png',
'+': 'crop-6564ed672209311475e2dac563f709c37b09c7da7b958398702f56a5865269cf.png',
'-': 'crop-40eee63f726b9d21497c64f9a0ab481cccfe58e55e55cb6c2b4fe6b9c850f4a3.png',
'x': 'crop-2fbbc426c2d7df99527462e6ef87aaa599cb2b80153b36e72614a94f0a57bc84.png',
'=': 'crop-e18702fd1f7c2db9330bde27cff8f834360f617346717700b707812c88625345.png',
'/': 'crop-7413d025acb77e0f2acde7fa5df652be91a35ad11b62fad6a27140fe95536a59.png'
};
for(let row of calc_rows) {
console.log(row);
let op1_array = JSON.parse(row['op1']);
for(let digit of op1_array){
await api.clickCrop(crop_mapping[digit],30,30);
}
await api.clickCrop(crop_mapping[row['op']],30,30);
let op2_array = JSON.parse(row['op2']);
for(let digit of op2_array){
await api.clickCrop(crop_mapping[digit],30,30);
}
await api.clickCrop(crop_mapping['='],30,30);
let found = await api.screen.find(crop_mapping['/']);
await api.mouse.move(found.left, found.top-50);
await api.mouse.clickLeft();
await api.sleep(1000);
await api.mouse.clickLeft();
await api.cmdC();
await api.sleep(1000);
let result = api.clipboard.readText();
row.result = result;
}
await api.writeCSV("計算結果.csv", calc_rows);
WINDOWS
await api.shell.openPath('C:\\Windows\\System32\\calc.exe');
await api.sleep(2000);
let crop_mapping = {
1:'crop-949c4e8ecf8b14df8fef94f6b926ffed5754e70287429547008e82dc8011b66b.png',
2:'crop-693ddfb244f3f27f677b47eacf13842560e781bb1f6a93cb9de31964b589850b.png',
3:'crop-94473ca981b610bd2bd07fb6934f2ef4a3a2a2e7bed81f1750cf524c4aecf04e.png',
'+':'crop-5a53f546683f85fe8014544d92acad03c45d2eb04cef719e507ab013d7222dbe.png',
'-':'crop-6e2858f139784e51b6414e10b782e8f4b8df99313628b59c1496ea73911e09da.png',
'x':'crop-66e0c929adb3ff2a2253ff17fa7586d69db98d1094550796d85218eb5fe199fe.png',
'/': 'crop-b22536ec02c7d3741c1480ea072e5b520da4ff3233ce63db2ca0855bebb8f95e.png',
'=': 'crop-f2857bb3a95d6c3d0e44aa62ed8f1eab60cd1838241e8571b6bf6e3e3bee7253.png'
};
let calc_rows = await api.readCSV('計算機.csv', ',', 0);
console.log(calc_rows);
for(let row of calc_rows) {
console.log(row);
let op1_array = JSON.parse(row['op1']);
for(let digit of op1_array){
await api.clickCrop(crop_mapping[digit],30,30);
}
await api.clickCrop(crop_mapping[row['op']],30,30);
let op2_array = JSON.parse(row['op2']);
for(let digit of op2_array){
await api.clickCrop(crop_mapping[digit],30,30);
}
await api.clickCrop(crop_mapping['='],30,30);
let found = await api.screen.find(crop_mapping['/']);
await api.mouse.move(found.left+42, found.top-143);
await api.sleep(1500);
await api.mouse.drag(found.left+42-300, found.top-143);
await api.sleep(1500);
await api.ctrlC();
await api.sleep(1500);
let result = api.clipboard.readText();
row.result = result.replaceAll(',','');
}
await api.writeCSV("計算結果.csv", calc_rows);