前言
自動化指令碼可以完成任何事情,幫助大家節省時間和成本,這也是機器人流程自動化(RPA)和自動化測試在企業中應用越來越廣的原因。下面就介紹一個通過指令碼自動化備份檔案的步驟,懂一點JavaScript的同學都能輕鬆實現噢。
百度網盤作為一款常用的網路儲存軟體,可以幫助我們將檔案儲存到雲端,為儲存檔案提供了很大的便利。同時,百度網盤有個【自動備份資料夾】的功能,以便於自動同步。但是這個功能是會員,需要收費才能用。假如你和我一樣不是會員,恰巧又想用到這個功能。那就跟著我來寫一個簡單的自動化指令碼來實現這個功能吧!
準備
- 作業系統:Windows7以及以上版本的Windows。
- 客戶端:安裝百度網盤Windows桌面客戶端。
- 程式碼: CukeTest 內建有Windows桌面應用自動化庫的一款自動化編輯器 cuketest.com/download
操作步驟
- 設定本地需要備份的資料夾
- 獲取本地目錄中檔名
- 自動化指令碼操作百度網盤開啟本地目錄上傳此目錄檔案。
具體操作
- 開啟CukeTest,新建專案,選擇【Windows】模組。
-
編輯feature檔案,輸入功能描述。
# language: zh-CN 功能: 備份檔案到百度網盤 百度的自動備份功能需要會員才能用,作為沒有會員的我寫一段自動化指令碼來實現類似功能 場景: 自動備份檔案到百度網盤 假如將"D:\\backups" 目錄作為需要備份的目錄。 同時獲取此目錄下所有檔案。 那麼將此目錄檔案上傳到百度網盤。 複製程式碼
- 備份檔案的操作:開啟百度網盤,點選【上傳】按鈕,選擇資料夾,上傳。根據手工操作步驟,準備百度網盤客戶端的物件模型。開啟model1.tmodel檔案;使用CukeTest自帶的Windows物件識別器查詢元素。
百度網盤的介面不是用標準的Windows控制元件來做的。使用物件識別器只能識別到整個Window。這裡介紹一下物件識別器的另一個功能--【虛擬物件識別】。具體操作如下: (也可以參考騰訊課堂免費視訊:ke.qq.com/course/3473…)
- 在識別到的整個Windows控制元件上右鍵--【編輯虛擬控制元件】
2. 在編輯虛擬控制元件介面。【新增虛擬控制元件】--畫出【上傳】按鈕的位置,並修改控制元件名為【上傳】
複製程式碼
3. 點選確定。在物件模型管理器中可以實現對【上傳】控制元件的定位。
複製程式碼
- 使用模型管理器獲取檔案上傳對話方塊的物件模型。
- 根據描述實現自動化指令碼。
definitions1.js
const { Given, When, Then } = require('cucumber'); const { TestModel, Auto } = require('leanpro.win'); const { Util } = require('leanpro.common'); const path = require('path'); let fs = require('fs'); let model = TestModel.loadModel(__dirname + "/model1.tmodel"); //// 你的步驟定義 ///// var backpath; Given(/^將"([^"]*)" 目錄作為需要備份的目錄。$/, async function (dirpath) { backpath = path.join(dirpath); }); var filestring=''; Given(/^獲取此目錄下所有檔案。$/, async function () { let moment =require('moment') let date = moment().format('YYYY-MM-DD'); let dir = path.join(backpath); let files = fs.readdirSync(dir) for(var i =0;i<files.length;i++){ filestring += '"'+files[i]+'" ' } }); Then(/^將此目錄檔案上傳到百度網盤。$/, async function () { await model.getVirtual("上傳").click(0, 0, 1); await model.getEdit("檔名(N):1").clearAll(); await model.getEdit("檔名(N):1").set(backpath); await model.getButton("存入百度網盤").click(0, 0, 1); await model.getEdit("檔名(N):1").set(filestring); console.log(filestring) await model.getButton("存入百度網盤").click(0, 0, 1); }); 複製程式碼
- 執行 點選【執行】按鈕,即可看到自動化指令碼可以自動開啟百度網盤上傳檔案。
- 擴充套件 CukeTest的指令碼支援命令列執行,具體可以在【執行】--【編輯執行配置】中可以找到。
編輯執行配置中複製生成的命令列,可以直接在命令列中執行,所以可以將此命令寫到bat指令碼中。設定定時任務執行來實現定時上傳檔案。或者在Jenkins中配置定時任務實現定時自動備份檔案。
總結
下次要備份別的目錄只要修改feature檔案中目錄資訊就可以了,無需修改程式碼。有興趣的同學可以舉一反三,將平常繁瑣的操作自動化,只需要一些node.js的基礎知識,就可以快速編寫一個可以自動化的場景。當這些場景積累多了,可以組合成一個自動化流程,那時你就是流程自動化的專家啦。