Ai-Bot是Android+Windows平臺上的rpa框架。
1、跟python的區(qū)別?跟uipaht uibot 其他框架的區(qū)別?
1) VS python
相同點:Ai-Bot基于node.js語言的一款自動化框架。和python一樣,有同樣強大的社區(qū)庫調(diào)用。
不同點:
? ? ? ? ? 1、Ai-Bot內(nèi)置chromium內(nèi)核瀏覽器,繞過webdriver驅(qū)動直接與瀏覽器內(nèi)核通信。python selenium則通過webdriver驅(qū)動瀏覽器,瀏覽器會有webdriver特征碼。
? ? ? ? ? 2、Ai-Bot 支持windows ui元素操作,Id、Name、className、ControlType、XPath等定位方式。c++實現(xiàn)速度非常快。
? ? ? ? ? 3、Android自動化,優(yōu)化appium內(nèi)核,動態(tài)畫面處理較快,除了appium 提供元素定位之外,還支持文字定位、圖色定位,有效提供h5 webview界面的自動化需求。
2) VS uipaht uibot
? ? ? ? ? 1、uipaht uibot 圖形編輯機器人,相對于Ai-Bot低代碼形式,更適合普通人使用。
? ? ? ? ? 2、Ai-Bot 采用c++實現(xiàn),與目前其他rpa框架 c# vb python等語言實現(xiàn)不同。對于專業(yè)的rpa實施人士來說,Ai-Bot靈活性更高,機器人運行更穩(wěn)定性強,速度更快。
? ? ? ? ? 3、由于Ai-Bot擁有node.js強大社區(qū)庫,它能夠完成其他rpa框架無法完成的工作需求。
? ? ? ? ? 4、Ai-Bot 不依賴系統(tǒng)的軟件環(huán)境。直接對word excle 數(shù)據(jù)庫和瀏覽器操作,電腦上不需安裝相關(guān)軟件。
? ? ? ? ? 5、Ai-Bot 支持Android和windows 平臺同時協(xié)作辦公
? ? ? ? ? 6、Ai-Bot 大部分功能是開源的。
2、Ai-Bot開發(fā)文檔
1)Windows開發(fā)文檔
1.創(chuàng)建/關(guān)閉WindowsBot
(1)主函數(shù)示例
const windowsBot = require('WindowsBot');//引用WindowsBot模塊
async function mian()
{
let windowsBotPort = 9999;
let proxyServer = "127.0.0.1:888";
//初始化WindowsBot
await windowsBot.InitWindowsBot(windowsBotPort, proxyServer);
}
mian();
//主函數(shù)初始化WindowsBot服務(wù)
//windowsBotPort 整型,WindowsBot服務(wù)端口,多開進程,端口不可重復(fù)
//proxyServer 字符串,可選參數(shù)。設(shè)置WebBot內(nèi)置瀏覽器代理ip
(2)關(guān)閉WindowsBot
await CloseWindowsBot();
//關(guān)閉WindowsBot服務(wù)
2.等待超時
await windowsBot.Sleep(3000);
//顯示等待
//參數(shù)一 整型,等待時間,單位毫秒
await windowsBot.SetImplicitTimeout(waitMS, intervalMS = 10);
//隱式等待
//參數(shù)一 整型,等待時間,單位毫秒
//參數(shù)二 整型,心跳間隔,單位毫秒??蛇x參數(shù),默認10毫秒
3.操作模式
await windowsBot.SetCurMode(true);
//參數(shù)一 布爾類型,true前臺,false后臺,WindowsBot默認前臺操作
4.查找窗口句柄
await windowsBot.FindWindowHandle("className", "windowName");
//查找窗口句柄
//參數(shù)一 字符串型,窗口類名
//參數(shù)二 字符串型,窗口標題
//成功返回句柄,失敗返回null
await windowsBot.FindWindowsHandle("className", "windowName");
//查找窗口句柄數(shù)組
//參數(shù)一 字符串型,窗口類名
//參數(shù)二 字符串型,窗口標題
//成功返回句柄數(shù)組,失敗返回null
await windowsBot.FindSubWindowHandle("hwndParent", "className", "windowName");
//查找子窗口句柄
//參數(shù)一 整型,父窗口句柄
//參數(shù)二 字符串型,窗口類名
//參數(shù)三 字符串型,窗口標題
//成功返回句柄,失敗返回null
await windowsBot.FindWebBotHandle();
//查找WebBot內(nèi)置瀏覽器句柄
//成功返回句柄,失敗返回null
5.鼠標操作
await windowsBot.MoveMouse(hwnd, x, y);
//移動鼠標
//參數(shù)一 整型,窗口句柄
//參數(shù)二 整型,x坐標
//參數(shù)三 整型,y坐標
await windowsBot.RollMouse(hwnd, x, y, dwData);
//滾動鼠標
//參數(shù)一 整型,窗口句柄
//參數(shù)二 整型,x坐標
//參數(shù)三 整型,y坐標
//參數(shù)四 整型,鼠標滾動次數(shù),負數(shù)下滾鼠標,正數(shù)上滾鼠標
await windowsBot.ClickMouse(hwnd, x, y, msg);
//點擊鼠標,后臺模式下,控件獨句柄與hwnd不一致時會失敗
//參數(shù)一 整型,窗口句柄
//參數(shù)二 整型,x坐標
//參數(shù)三 整型,y坐標
//參數(shù)四,單擊左鍵:1 單擊右鍵:2 按下左鍵:3 彈起左鍵:4 按下右鍵:5 彈起右鍵:6 雙擊左鍵:7 雙擊右鍵:8
6.鍵盤操作
await windowsBot.InputText(hwnd, text);
//輸入文本,殺毒軟件可能會攔截
//參數(shù)一 整型,窗口句柄
//參數(shù)二 字符串型,輸入內(nèi)容
await windowsBot.InputKeyborad(bVk, msg);
//輸入鍵盤VK值
//參數(shù)一 整型,VK鍵值
//參數(shù)二 整型,按下彈起:1 按下:2 彈起:3
7.截圖保存
await windowsBot.SaveScreenshot(hwnd, imagePath, x = 0, y =0, width = 0, height = 0);
//后臺截圖保存
//參數(shù)一 整型,窗口句柄
//參數(shù)二 字符串型,圖片保存的路徑
//參數(shù)三 整型,可選參數(shù),頂點x坐標
//參數(shù)四 整型,可選參數(shù),頂點y坐標
//參數(shù)五 整型,可選參數(shù),圖片寬度
//參數(shù)六 整型,可選參數(shù),圖片高度
//成功返回true,失敗返回false
await windowsBot.FrontSaveScreenshot(imagePath, x = 0, y =0, width = 0, height = 0);
//前臺截圖保存,當SaveScreenshot截圖失效時,可用此函數(shù)
//參數(shù)一 字符串型,圖片保存的路徑
//參數(shù)二 整型,可選參數(shù),頂點x坐標
//參數(shù)三 整型,可選參數(shù),頂點y坐標
//參數(shù)四 整型,可選參數(shù),圖片寬度
//參數(shù)五 整型,可選參數(shù),圖片高度
//成功返回true,失敗返回false
8.圖色定位
await windowsBot.FindColorCount(imagePath, R, G, B);
//查找圖片顏色點的數(shù)量和坐標
//參數(shù)一 字符串型,圖片的路徑
//參數(shù)二 整型,紅
//參數(shù)三 整型,綠
//參數(shù)四 整型,藍
//返回指定rgb點的數(shù)量和坐標
await windowsBot.FindColor(hwnd, imagePath, R, G, B, index = 0);
//查找指定色值在圖片上的位置
//參數(shù)一 整型,窗口句柄
//參數(shù)二 字符串型,圖片的路徑
//參數(shù)三 整型,紅
//參數(shù)四 整型,綠
//參數(shù)五 整型,藍
//參數(shù)六 整型,可選參數(shù),指定出現(xiàn)的次數(shù),默認第一次查找到的坐標
//成功返回指定rgb點的坐標,失敗返回 {x:-1, y:-1}
await windowsBot.FindImage(hwnd, sourceImagePath, destImagePath, sim);
//查找圖片,大圖找小圖
//參數(shù)一 整型,窗口句柄
//參數(shù)二 字符串型,大圖路徑
//參數(shù)三 字符串型,小圖路徑
//參數(shù)四 浮點型,相似度0.0-1.0
//成功返回指定rgb點的坐標,失敗返回 {x:-1, y:-1}
9.系統(tǒng)剪切板
await windowsBot.SetClipboardText(text);
//設(shè)置剪切板文本
//參數(shù)一 字符串型,設(shè)置的文本
await windowsBot.GetClipboardText();
//獲取剪切板文本
//返回剪切板文本
10.啟動程序
await windowsBot.StartProcess(commandLine, showWindow = true, isWait = false);
//啟動指定程序
//參數(shù)一 字符串型,啟動命令行
//參數(shù)二 布爾型,是否顯示窗口??蛇x參數(shù),默認顯示窗口
//參數(shù)三 布爾型,是否等待程序結(jié)束。可選參數(shù),默認不等待
//成功返回true,失敗返回false
11.下載文件
await windowsBot.DownloadFile(url, filePath, isWait);
//啟動指定程序
//參數(shù)一 字符串型,文件地址
//參數(shù)二 字符串型,文件保存的路徑
//參數(shù)三 布爾型,是否等待.為true時,等待下載完成
12.ocr系統(tǒng)
await windowsBot.InitOcr(appId, apiKey, secretKey);
//初始化百度ocr
//參數(shù)一 字符串型,百度ocr提供
//參數(shù)二 字符串型,百度ocr提供
//參數(shù)三 字符串型,百度ocr提供
await windowsBot.GetImageWords(imagePath, ocrType);
//百度ocr獲取圖片上的文字
//參數(shù)一 字符串型,圖片路徑
//參數(shù)二 整型,識別類型,通用文字識別:1 高精度版:2 網(wǎng)絡(luò)圖片文字識別:3 數(shù)字識別:4 手寫文字識
別:5 二維碼識別:6
//成功返回獲取的文字
await windowsBot.FindImageWords(hwnd, imagePath, words, index = 0);
//百度ocr獲取圖片文字坐標
//參數(shù)一 整型,圖片所屬窗口的句柄,手機圖片識別一般為null
//參數(shù)二 字符串型,圖片路徑
//參數(shù)三 字符串型,識別的文字
//參數(shù)四 整型,可選參數(shù)。文字出現(xiàn)的次數(shù),默認為0,查找第一次出現(xiàn)的坐標
//成功返回文字坐標,失敗返回{x:-1, y:-1}
13.驗證碼識別系統(tǒng)
await windowsBot.InitCheckCode(userName, passWord);
//初始化驗證碼系統(tǒng)
//參數(shù)一 字符串型,用戶名,第三方平臺提供
//參數(shù)二 字符串型,用戶密碼,第三方平臺提供
await windowsBot.GetCheckCode(imagePath, codeType);
//獲取驗證碼
//參數(shù)一 字符串型,驗證碼圖片路徑
//參數(shù)二 字符串型,驗證碼類型,參考第三方平臺
//成功返回驗證碼,失敗返回錯誤信息
await windowsBot.SendErrorCode();
//發(fā)送驗證碼識出錯
//成功返回"true",失敗返回錯誤信息
14.窗口元素操作
注意:窗口元素操作未默認釋放,必須手動釋放,否則內(nèi)存泄漏!
(1)查找元素
await windowsBot.FindRootElement(hwnd);
//查找窗口根元素
//參數(shù)一 整型,窗口句柄
//成功返回元素對象,失敗返回null
await windowsBot.FindFocusElement();
//查找焦點元素
//成功返回元素對象,失敗返回null
await windowsBot.FindElementByAutomationId(rootElement, automationId);
//通過automationId查找元素
//參數(shù)一 對象,根元素
//參數(shù)二 字符串,要查找元素的automationId值
//成功返回元素對象,失敗返回null
await windowsBot.FindElementsByAutomationId(rootElement, automationId);
//通過automationId查找元素數(shù)組
//參數(shù)一 對象,根元素
//參數(shù)二 字符串,要查找元素的automationId值
//成功返回元素對象數(shù)組,失敗返回null
await windowsBot.FindElementByName(rootElement, name);
//通過name查找元素
//參數(shù)一 對象,根元素
//參數(shù)二 字符串,要查找元素的name值
//成功返回元素對象,失敗返回null
await windowsBot.FindElementsByName(rootElement, name);
//通過name查找元素數(shù)組
//參數(shù)一 對象,根元素
//參數(shù)二 字符串,要查找元素的name值
//成功返回元素對象數(shù)組,失敗返回null
await windowsBot.FindElementByClassName(rootElement, className);
//通過className查找元素
//參數(shù)一 對象,根元素
//參數(shù)二 字符串,要查找元素的className值
//成功返回元素對象,失敗返回null
await windowsBot.FindElementsByClassName(rootElement, className);
//通過className查找元素數(shù)組
//參數(shù)一 對象,根元素
//參數(shù)二 字符串,要查找元素的className值
//成功返回元素對象數(shù)組,失敗返回null
await windowsBot.FindElementByControlType(rootElement, controlType);
//通過controlType查找元素
//參數(shù)一 對象,根元素
//參數(shù)二 字符串,要查找元素的controlType值
//成功返回元素對象,失敗返回null
await windowsBot.FindElementsByControlType(rootElement, controlType);
//通過controlType查找元素數(shù)組
//參數(shù)一 對象,根元素
//參數(shù)二 字符串,要查找元素的controlType值
//成功返回元素對象數(shù)組,失敗返回null
await windowsBot.FindElementByXpath(rootElement, xpath);
//通過xpath查找元素
//參數(shù)一 對象,根元素
//參數(shù)二 字符串,要查找元素的xpath值
//成功返回元素對象,失敗返回null
await windowsBot.FindParentElement(currentElement, isRelease = true);
//查找父元素
//參數(shù)一 對象,當前元素
//參數(shù)二 布爾型,可選參數(shù)。是否釋放當前元素
//currentElement不再使用時必須釋放,否則內(nèi)存泄漏.默認為true釋放當前元素
//成功返回元素對象,失敗返回null
await windowsBot.FindNextSiblingElement(currentElement, isRelease = true);
//查找下一個兄弟元素
//參數(shù)一 對象,當前元素
//參數(shù)二 布爾型,可選參數(shù)。是否釋放當前元素
//currentElement不再使用時必須釋放,否則內(nèi)存泄漏.默認為true釋放當前元素
//成功返回元素對象,失敗返回null
await windowsBot.FindPreviousSiblingElement(currentElement, isRelease = true);
//查找上一個兄弟元素
//參數(shù)一 對象,當前元素
//參數(shù)二 布爾型,可選參數(shù)。是否釋放當前元素
//currentElement不再使用時必須釋放,否則內(nèi)存泄漏.默認為true釋放當前元素
//成功返回元素對象,失敗返回null
await windowsBot.FindFirstChildElement(currentElement, isRelease = true);
//查找第一個子元素
//參數(shù)一 對象,當前元素
//參數(shù)二 布爾型,可選參數(shù)。是否釋放當前元素
//currentElement不再使用時必須釋放,否則內(nèi)存泄漏.默認為true釋放當前元素
//成功返回元素對象,失敗返回null
await windowsBot.FindLastChildElement(currentElement, isRelease = true);
//查找最后一個子元素
//參數(shù)一 對象,當前元素
//參數(shù)二 布爾型,可選參數(shù)。是否釋放當前元素
//currentElement不再使用時必須釋放,否則內(nèi)存泄漏.默認為true釋放當前元素
//成功返回元素對象,失敗返回null
(2)元素方法
await windowsBot.GetElementName(element, isRelease = true);
//獲取指定元素name屬性值
//參數(shù)一 對象,指定元素
//參數(shù)二 布爾型,可選參數(shù)。element不再使用時必須釋放,否則內(nèi)存泄漏.默認為true釋放
//成功返回元素name屬性值
await windowsBot.GetElementBoundingRectangle(element, isRelease = true);
//獲取指定元素矩形大小
//參數(shù)一 對象,指定元素
//參數(shù)二 布爾型,可選參數(shù)。element不再使用時必須釋放,否則內(nèi)存泄漏.默認為true釋放
//成功返回元素矩形大小,失敗返回{left:-1, top:-1, right:-1, bottom:-1}
await windowsBot.GetElementValueValue(element, isRelease = true);
//獲取指定元素ValueValue屬性值
//參數(shù)一 對象,指定元素
//參數(shù)二 布爾型,可選參數(shù)。element不再使用時必須釋放,否則內(nèi)存泄漏.默認為true釋放
//成功返回元素ValueValue屬性值
await windowsBot.GetControlType(element, isRelease = true);
//獲取指定元素ControlType屬性值
//參數(shù)一 對象,指定元素
//參數(shù)二 布爾型,可選參數(shù)。element不再使用時必須釋放,否則內(nèi)存泄漏.默認為true釋放
//成功返回元素ControlType屬性值
await windowsBot.SetElementValue(element, value, isRelease = true);
//設(shè)置指定元素value
//參數(shù)一 對象,指定元素
//參數(shù)二 字符串型,設(shè)置的值
//參數(shù)三 布爾型,可選參數(shù)。element不再使用時必須釋放,否則內(nèi)存泄漏.默認為true釋放
//成功返回true,失敗返回false
await windowsBot.SetElementValueEx(element, value, isRelease = true);
//通過元素窗口句柄設(shè)置指定元素value
//參數(shù)一 對象,指定元素
//參數(shù)二 字符串型,設(shè)置的值
//參數(shù)三 布爾型,可選參數(shù)。element不再使用時必須釋放,否則內(nèi)存泄漏.默認為true釋放
//成功返回true,失敗返回false.后臺模式下,如果元素沒有句柄則失敗
await windowsBot.InvokeElement(element, isRelease = true);
//執(zhí)行元素默認操作,一般用作點擊
//參數(shù)一 對象,指定元素
//參數(shù)二 布爾型,可選參數(shù)。element不再使用時必須釋放,否則內(nèi)存泄漏.默認為true釋放
//成功返回true,失敗返回false
await windowsBot.SetElementFocus(element, isRelease = true);
//設(shè)置指定元素作為焦點
//參數(shù)一 對象,指定元素
//參數(shù)二 布爾型,可選參數(shù)。element不再使用時必須釋放,否則內(nèi)存泄漏.默認為true釋放
//成功返回true,失敗返回false
await windowsBot.SetElementScroll(element, horizontalPercent, verticalPercent, isRelease = true);
//設(shè)置指定元素滾動條
//參數(shù)一 對象,指定元素
//參數(shù)二 浮點型,水平百分比0.0-1.0,為-1時不滾動
//參數(shù)三 浮點型,垂直百分比0.0-1.0,為-1時不滾動
//參數(shù)四 布爾型,可選參數(shù)。element不再使用時必須釋放,否則內(nèi)存泄漏.默認為true釋放
//成功返回true,失敗返回false
await windowsBot.ClickElement(element, msg, isRelease = true);
//通過元素窗口句柄點擊控件
//參數(shù)一 對象,指定元素
//參數(shù)二 整型,單擊左鍵:1 單擊右鍵:2 按下左鍵:3 彈起左鍵:4 按下右鍵:5 彈起右鍵:6 雙擊左鍵:7
雙擊右鍵:8
//參數(shù)三 布爾型,可選參數(shù)。element不再使用時必須釋放,否則內(nèi)存泄漏.默認為true釋放
//成功返回true,失敗返回false.后臺模式下,元素沒有句柄則失敗
await windowsBot.CloseWindow(element, isRelease = true);
//關(guān)閉指定元素窗口
//參數(shù)一 對象,指定元素
//參數(shù)二 布爾型,可選參數(shù)。element不再使用時必須釋放,否則內(nèi)存泄漏.默認為true釋放
//成功返回true,失敗返回false.
await windowsBot.SetWindowState(element, state, isRelease = true);
//設(shè)置指定元素窗口狀態(tài)
//參數(shù)一 對象,指定元素
//參數(shù)二 整型,正常:0 最大化:1 最小化:2
//參數(shù)三 布爾型,可選參數(shù)。element不再使用時必須釋放,否則內(nèi)存泄漏.默認為true釋放
//成功返回true,失敗返回false.
await windowsBot.ReleaseElement(element);
//手動釋放指定元素,windows元素操作必須要釋放元素,否則內(nèi)存泄漏
//參數(shù)一 對象,指定元素
//成功返回true,失敗返回false.
await windowsBot.ReleaseElements(elements);
//手動釋放指定元素數(shù)組,元素數(shù)組不再使用時,必須調(diào)用此函數(shù)手動釋放,否則大量內(nèi)存泄漏
//參數(shù)一 對象,指定元素數(shù)組
15.內(nèi)置瀏覽器(WebBot)
(1)WebBot操作
await windowsBot.openWebBot(url);
//打開內(nèi)置瀏覽器WebBot
//參數(shù)一 字符串型,指定網(wǎng)址
await windowsBot.switchPage(index);
//切換WebBot頁面
//參數(shù)一 整型,索引號,0為起首頁
await windowsBot.closePage(index);
//關(guān)閉WebBot頁面
//參數(shù)一 整型,索引號,0為起首頁
(2)獲取元素
await windowsBot.getElementById(id, iframe = null);
//通過id獲取元素
//參數(shù)一 字符串型,元素id值
//參數(shù)二 字符串型,可選參數(shù),元素所屬的iframe
//成功返回元素對象,失敗返回null
await windowsBot.getElementsByClassName(classNames, iframe = null);
//通過class獲取元素數(shù)組
//參數(shù)一 字符串型,元素class值
//參數(shù)二 字符串型,可選參數(shù),元素所屬的iframe
//成功返回元素對象數(shù)組,失敗返回null
await windowsBot.getElementsByName(elementName, iframe = null);
//通過name獲取元素數(shù)組
//參數(shù)一 字符串型,元素name值
//參數(shù)二 字符串型,可選參數(shù),元素所屬的iframe
//成功返回元素對象數(shù)組,失敗返回null
await windowsBot.getElementsByTagName(localName, iframe = null);
//通過tagName獲取元素數(shù)組
//參數(shù)一 字符串型,元素tagName值
//參數(shù)二 字符串型,可選參數(shù),元素所屬的iframe
//成功返回元素對象數(shù)組,失敗返回null
await windowsBot.getElementByXpath(xpath, iframe = null);
//通過xpath獲取元素數(shù)組
//參數(shù)一 字符串型,元素xpath路徑
//參數(shù)二 字符串型,可選參數(shù),元素所屬的iframe
//成功返回元素對象,失敗返回null
await windowsBot.querySelector(selector, iframe = null);
//通過ccs selector獲取元素
//參數(shù)一 字符串型,元素selector路徑
//參數(shù)二 字符串型,可選參數(shù),元素所屬的iframe
//成功返回元素對象,失敗返回null
await windowsBot.querySelectorAll(selectors, iframe = null);
//通過ccs selector獲取元素數(shù)組
//參數(shù)一 字符串型,元素selector路徑
//參數(shù)二 字符串型,可選參數(shù),元素所屬的iframe
//成功返回元素對象數(shù)組,失敗返回null
(3)元素方法
await windowsBot.clickElement(element);
//點擊元素
//參數(shù)一 對象,要點擊的元素
await windowsBot.clickElementEx(element);
//點擊元素(windows api方式點擊)
//參數(shù)一 對象,要點擊的元素
await windowsBot.setValue(element, value);
//設(shè)置元素value
//參數(shù)一 對象,設(shè)置的元素
//參數(shù)二 字符串型,設(shè)置的值
await windowsBot.getValue(element);
//獲取元素value
//參數(shù)一 對象,指定的元素
//成功返回value值
await windowsBot.setTextConten(element, value);
//設(shè)置元素textConten
//參數(shù)一 對象,設(shè)置的元素
//參數(shù)二 字符串型,設(shè)置的值
await windowsBot.getTextConten(element);
//獲取元素textConten
//參數(shù)一 對象,指定的元素
//成功返回textConten值
await windowsBot.setOuterText(element, value);
//設(shè)置元素outerText
//參數(shù)一 對象,設(shè)置的元素
//參數(shù)二 字符串型,設(shè)置的值
await windowsBot.getOuterText(element);
//獲取元素outerText
//參數(shù)一 對象,指定的元素
//成功返回outerText值
await windowsBot.setOuterHTML(element, value);
//設(shè)置元素setOuterHTML
//參數(shù)一 對象,設(shè)置的元素
//參數(shù)二 字符串型,設(shè)置的值
await windowsBot.getOuterHTML(element);
//獲取元素outerText
//參數(shù)一 對象,指定的元素
//成功返回outerHTML值
await windowsBot.setInnerText(element, value);
//設(shè)置元素setInnerText
//參數(shù)一 對象,設(shè)置的元素
//參數(shù)二 字符串型,設(shè)置的值
await windowsBot.getInnerText(element);
//獲取元素innerHTML
//參數(shù)一 對象,指定的元素
//成功返回innerHTML值
await windowsBot.setAttribute(element, value, name);
//設(shè)置元素屬性
//參數(shù)一 對象,設(shè)置的元素
//參數(shù)二 字符串型,設(shè)置的值
//參數(shù)三 字符串型,屬性名稱
await windowsBot.getAttribute(element, name);
//獲取元素屬性值
//參數(shù)一 對象,指定的元素
//參數(shù)二 字符串型,屬性名稱
//成功返回name對應(yīng)的屬性值
await windowsBot.setSelect(element, checkValue);
//選擇下拉框值
//參數(shù)一 對象,指定的元素
//參數(shù)二 字符串型,選中的值
//成功返回name對應(yīng)的屬性值
await windowsBot.getBoundingClientRect(element);
//獲取元素矩形大小
//參數(shù)一 對象,指定的元素
//成功返矩形大小,失敗返回null
(4)注入JavaScript
await windowsBot.executeScript(scriptCode);
//注入JavaScript代碼在v8執(zhí)行
//參數(shù)一 字符串型,JavaScript代碼
(5)node與V8數(shù)據(jù)共享
await windowsBot.nodePipeScript(shareData = 'null');
//WebBot V8有同名稱擴展函數(shù),可在executeScript調(diào)用。shareData更新需要10-100毫秒
//參數(shù)一 字符串型,設(shè)置共享數(shù)據(jù)值,可選參數(shù)。
//返回node/v8 設(shè)置的shareData值。
16.Word文檔
await windowsBot.wordCreate(options = {type: 'docx'});
/創(chuàng)建Wrod文檔
//參數(shù)一 對象,Word文檔格式,可選參數(shù),options列表:
* type(字符串)'docx' 必要參數(shù)值
* author(字符串)-文檔的作者
* creator(字符串)-別名。文檔的作者
* description'(字符串)-文檔的屬性注釋
* keywords(字符串)-文檔的關(guān)鍵字
* orientation(字符串)-橫向'landscape'或縱向'portrait'。默認值為'portrait'
* pageMargins(對象)-設(shè)置文檔頁邊距。默認值為{top: 1800, right: 1440, bottom: 1800,
left: 1440}
* pageSize(字符串|對象)-設(shè)置文檔頁面大小。默認值為A4(支持值:'A4', 'A3', 'letter
paper')?;蚴褂脅width: 11906, height: 16838}設(shè)置自定義尺寸
* subject (字符串)-文檔的主題
* title(字符串)-文檔的標題
* columns(整型)-每頁中的列數(shù)。默認值為1列。
//返回word對象
await windowsBot.wordAddPage(docxObject);
//添加word分頁
//參數(shù)一 對象,word對象
await windowsBot.wordCreateTable(docxObject, table, tableStyle);
//創(chuàng)建word表格
//參數(shù)一 對象,word對象
//參數(shù)二 對象,表格
//參數(shù)三 對象,表格樣式
await windowsBot.wordAddHeader(docxObject, text, options = '');
//添加頁眉
//參數(shù)一 對象,word對象
//參數(shù)二 字符串,要添加的文本
//參數(shù)三 字符串,可選參數(shù),要更改的頁面 'even'更改偶數(shù)頁。'first'僅更改首頁
await windowsBot.wordAddFooter(docxObject, text, options = '');
//添加頁腳
//參數(shù)一 對象,word對象
//參數(shù)二 字符串,要添加的文本
//參數(shù)三 字符串,可選參數(shù),要更改的頁面 'even'更改偶數(shù)頁。'first'僅更改首頁
await windowsBot.wordCreateParagraph(docxObject, options = {align: 'left'});
//創(chuàng)建段落
//參數(shù)一 對象,word對象
//參數(shù)二 對象, 可選參數(shù),段落格式,options列表:
* align(字符串)-水平對齊,可以是'left'(默認),'right','center'或'justify'
* textAlignment(字符串)-垂直對齊方式,'center', 'top', 'bottom'或'baseline'
* indentLeft(數(shù)字)- 向左縮進
* indentFirstLine(數(shù)字)- 縮進第一行
* backline(字符串)-顏色代碼,例如:'ffffff'(白色)或'000000'黑色)
//成功返回段落對象
await windowsBot.wordCreateListOfDots(docxObject, options = {align: 'left'});
//創(chuàng)建無作序號的段落
//參數(shù)一 對象,word對象
//參數(shù)二 對象, 可選參數(shù),段落格式,options列表:參考wordCreateParagraph
//成功返回段落對象
await windowsBot.wordCreateListOfNumbers(docxObject, options = {align: 'left'});
//創(chuàng)建有序號數(shù)字的段落
//參數(shù)一 對象,word對象
//參數(shù)二 對象, 可選參數(shù),段落格式,options列表:參考wordCreateParagraph
//成功返回段落對象
await windowsBot.wordCreateNestedUnOrderedList(docxObject, options = {"level":2});
//創(chuàng)建有等級的無序號段落
//參數(shù)一 對象,word對象
//參數(shù)二 對象, 可選參數(shù),段落格式,options列表:參考wordCreateParagraph
//成功返回段落對象
await windowsBot.wordCreateNestedOrderedList(docxObject, options = {"level":2});
//創(chuàng)建有等級的序號段落
//參數(shù)一 對象,word對象
//參數(shù)二 對象, 可選參數(shù),段落格式,options列表:參考wordCreateParagraph
//成功返回段落對象
await windowsBot.wordAddText(paragraphObject, text, sytle = {});
//將文本添加到段落
//參數(shù)一 對象,段落對象對象
//參數(shù)二 字符串, 要添加的文本
//參數(shù)三 對象,可選參數(shù),文本樣式,sytle列表:
* back(字符串)-背景顏色代碼,例如:'ffffff'(白色)或'000000'黑色)
* shdType(字符串)-要使用的可選模式代碼:'clear'(無模
式),'pct10','pct12','pct15','diagCross','diagStripe','horzCross','horzStripe','
nil' ,'thinDiagCross','solid'等
* shdColor(字符串)-模式的前部顏色(與shdType一起使用)
* bold(布爾)-為true時文本變?yōu)榇煮w
* border(字符串)-邊框類
型:'single','dashDotStroked','dashed','dashSmallGap','dotDash','dotDotDash','dott
ed','double','thick'
* color(字符串)-字體顏色代碼,例如:“ ffffff”(白色)或“ 000000”(黑色)
* italic(布爾值)-設(shè)置為斜體時為true
* underline(布爾值)-為true表示要添加下劃線
* font_face(字符串)-要使用的字體,例如:'Arial'
* font_face_east(字符串)-高級設(shè)置:用于東亞的字體。您還必須設(shè)置font_face
* font_face_cs(字符串)-高級設(shè)置:要使用的字體(cs)。您還必須設(shè)置font_face
* font_face_h(字符串)-高級設(shè)置:要使用的字體(hAnsi)。您還必須設(shè)置font_face
* font_hint(字符串)-可選。'ascii'(默認),'eastAsia','cs'或'hAnsi'
* font_size(數(shù)字)-以磅為單位的字體大小
* rtl(布爾值)-將其添加到rtl語言的任何文本中
* highlight (字符串) - 高亮顏色。'black', 'blue', 'cyan', 'darkBlue', 'darkCyan',
'darkGray', 'darkGreen', 'darkMagenta', 'darkRed', 'darkYellow', 'green', 'lightGray',
'magenta', 'none', 'red', 'white','yellow'
* strikethrough(布爾值)-添加刪除線時為true。
* superscript(布爾值)-如果可以使用較小的尺寸,則為true可以將此次運行中的文本降低到基
線以下,并將其更改為較小的尺寸。
* subscript(布爾值)-為true時,如果可以使用較小的尺寸,則將運行中的文本升高到基線以
上,并將其更改為較小的尺寸
* link(字符串)-超連接
* hyperlink(字符串)向書簽的超鏈接
await windowsBot.wordAddImage(paragraphObject, imagePath, area = {});
//將圖像添加到段落
//參數(shù)一 對象,段落對象
//參數(shù)二 字符串, 圖片路徑
//參數(shù)三 對象, 可選參數(shù), 圖片寬高 {cx: 300, cy: 200}
await windowsBot.wordBreak(paragraphObject);
//段落換行
//參數(shù)一 對象,段落對象
await windowsBot.wordAddHorizontalLine(paragraphObject);
//添加一條水平線,看上去與換行相似?
//參數(shù)一 對象,段落對象
await windowsBot.wordStartBookmark(paragraphObject, markName);
//添加書簽
//參數(shù)一 對象,段落對象
//參數(shù)二 字符串,標簽名
await windowsBot.wordEndBookmark(paragraphObject);
//書簽結(jié)束位置
//參數(shù)一 對象,段落對象
await windowsBot.wordSave(docxObject, filePath);
//保存word文件
//參數(shù)一 對象,word對象
//參數(shù)二 字符串,保存的路徑
await windowsBot.wordReadText(filePath);
//讀取word內(nèi)容
//參數(shù)一 字符串,保存的路徑
//成功返回讀取到的內(nèi)容,失敗返回null
17.Excel文檔
await windowsBot.OpenExcel(excelPath);
//打開excel文檔
//參數(shù)一 字符串,excle路徑
//成功返回excel對象,失敗返回null
await windowsBot.OpenExcelSheet(excelObject, sheetName);
//打開excel表格
//參數(shù)一 對象,excel對象
//參數(shù)二 字符串,表名
//成功返回sheet對象,失敗返回null
await windowsBot.SaveExcel(excelObject);
//保存excel文檔
//參數(shù)一 對象,excel對象
//成功返回true,失敗返回false
await windowsBot.WriteExcelNum(sheetObject, row, col, value);
//寫入數(shù)字到excel表格
//參數(shù)一 對象,sheet對象
//參數(shù)二 整型,行
//參數(shù)三 整型,列
//參數(shù)四 數(shù)字型,寫入的值
//成功返回true,失敗返回false
await windowsBot.WriteExcelStr(sheetObject, row, col, strValue);
//寫入字串到excel表格
//參數(shù)一 對象,sheet對象
//參數(shù)二 整型,行
//參數(shù)三 整型,列
//參數(shù)四 字符串,寫入的值
//成功返回true,失敗返回false
await windowsBot.ReadExcelNum(sheetObject, row, col);
//讀取excel表格數(shù)字
//參數(shù)一 對象,sheet對象
//參數(shù)二 整型,行
//參數(shù)三 整型,列
//返回讀取到的數(shù)字
await windowsBot.ReadExcelStr(sheetObject, row, col);
//讀取excel表格字串
//參數(shù)一 對象,sheet對象
//參數(shù)二 整型,行
//參數(shù)三 整型,列
//返回讀取到的字符
18.郵件收發(fā)
await windowsBot.SendMail(smtpServer, smtpPort, authCode, sendMailer, sendName, recvMailer,
subject, text, html = null, attachments = null);
//發(fā)送郵件
//參數(shù)一 字符串,SMTP服務(wù)地址
//參數(shù)二 整型,SMTP服務(wù)端號
//參數(shù)三 字符串,第三方郵箱平臺授權(quán)碼
//參數(shù)四 字符串,發(fā)送人郵箱
//參數(shù)五 字符串,發(fā)送人名稱
//參數(shù)六 字符串,接收人郵箱,多人逗號分開
//參數(shù)七 字符串,郵箱主題
//參數(shù)八 字符串,發(fā)送的正文 文本格式
//參數(shù)九 字符串,發(fā)送的正文 html格式,可選參數(shù),默認為null
//參數(shù)十 字符串, 發(fā)送的附件,可選參數(shù),默認為null 示例:
let attachments = [
{ // utf-8字符串作為附件
filename: 'text1.txt',
content: 'hello world!'
},
{ //磁盤上的文件作為附件
filename: 'text3.txt',
path: '/path/to/file.txt'
},
{ //文件名和內(nèi)容類型是從路徑生成
path: '/path/to/file.txt'
},
{ //使用URL作為附件
filename: 'WindowsDoc.pdf',
path: 'http://www.ai-bot.net/WindowsDoc.pdf'
}
]
//成功返回"郵件發(fā)送成功!",失敗返回錯誤信息
await windowsBot.GetMail(imapServer, imapPort, authCode, mailAccount,criteria);
//獲取郵件
//參數(shù)一 字符串,IMAP服務(wù)地址
//參數(shù)二 整型,IMAP服務(wù)端號
//參數(shù)三 字符串,第三方郵箱平臺授權(quán)碼
//參數(shù)四 字符串,郵箱賬號
//參數(shù)五 字符串,獲取哪類郵件,所有郵件'ALL' 未讀郵件'UNSEEN' 已讀郵件'SEEN' 第1-3封'1:3'
//成功返回郵件信息對象,失敗返回錯誤信息
2)Android開發(fā)文檔
1.創(chuàng)建/刪除AndroidBot
(1)主函數(shù)示例
const androidBot = require('AndroidBot');//引用AndroidBot模塊
async function mian()
{
let devicesId = "da32u4";
let serverPort = 4723;
let package = "com.example";
let activity = "activityName";
let version = "10";
//初始化AndroidBot
var driver = await androidBot.InitAndroidBot(devicesId, serverPort, package, activity, version);
}
mian();
//AndroidBot主函數(shù)調(diào)用InitAndroidBot初始化。返回值driver調(diào)用其他函數(shù),必須使用await關(guān)鍵字
//devicesId 字符串,設(shè)備ID,Ai-Bot工具 安卓——設(shè)備列表 選項獲取
//serverPort 整型,服務(wù)端口,多進程端口必須間隔1,比如 4723、4725、4727
//package 字符串,應(yīng)用程序包名,Ai-Bot工具 安卓——查看包名 選項獲取
//activity 字符串,應(yīng)用程序活動窗口名,Ai-Bot工具 安卓——查看包名 選項獲取
//version 字符串,安卓系統(tǒng)版本號
//成功返回AndroidBot對象
(2)獲取/設(shè)置參數(shù)
await driver.capabilities;
//獲取啟動參數(shù)
await driver.getSettings();
//獲取設(shè)定值
await driver.updateSettings({ignoreUnimportantViews: true});
//更改設(shè)定值,例如ignoreUnimportantViews: true 忽略其他不相關(guān)元素
(3)刪除會話
await driver.deleteSession();
//刪除driver對象
2.超時設(shè)置
await driver.setTimeouts(5000);
//設(shè)置超時 5秒
await driver.setImplicitTimeout(5000);
//設(shè)置隱式等待超時,腳本在搜索元素時等待的時間,默認隱式等待為0ms
await driver.setAsyncTimeout(5000);
//設(shè)置允許由 executeAsync 執(zhí)行的異步腳本的等待超時(以毫秒為單位)
3.屏幕操作
await driver.getOrientation();
//獲取當前設(shè)備橫豎屏狀態(tài)。
//返回值 字符串 LANDSCAPE(橫屏) PORTRAIT(豎屏)
await driver.setOrientation("LANDSCAPE");
//設(shè)置橫豎屏,LANDSCAPE(橫屏) PORTRAIT(豎屏)
await driver.startRecordingScreen();
//開始錄制屏幕
await driver.stopRecordingScreen();
//停止錄制屏幕;
//返回值:Base64 編碼的字符串
await driver.lock();
//鎖定設(shè)備
await driver.unlock();
//解鎖設(shè)備
await driver.isLocked();
//判斷設(shè)備是否被鎖定,如果設(shè)備已鎖定,返回True,否則為false
await driver.rotateDevice(100, 100);
//三維旋轉(zhuǎn)設(shè)備
await driver.shake();
//搖動設(shè)備
4.獲取系統(tǒng)狀態(tài)
await driver.getPerformanceDataTypes();
//返回允許讀取的系統(tǒng)狀態(tài)的信息類型,例如cpu,內(nèi)存,網(wǎng)絡(luò)流量和電池
await driver.getPerformanceData('my.app.package', 'cpuinfo', 5);
//參數(shù)1,應(yīng)用程序的軟件包名稱
//參數(shù)2,要讀取的系統(tǒng)狀態(tài)的類型。性能數(shù)據(jù)類型(cpuinfo|batteryinfo|networkinfo|memoryinfo)
//參數(shù)3,嘗試讀取的次數(shù)(可選)
//返回 字符串數(shù)組類型,讀取的系統(tǒng)狀態(tài)信息,例如cpu,內(nèi)存,網(wǎng)絡(luò)流量和電池
5.電源設(shè)置
await driver.powerAC('on');
//將電池充電器的狀態(tài)設(shè)置為已連接('on')或未連接('off')(僅模擬器)延遲1秒-2秒
await driver.powerCapacity(50);
//設(shè)置電池百分比(僅模擬器)
6.網(wǎng)絡(luò)操作
await driver.toggleAirplaneMode();
//切換飛行模式(部分設(shè)備不可用)
await driver.toggleData();
//切換數(shù)據(jù)服務(wù)狀態(tài)(部分設(shè)備不可用)
await driver.toggleWiFi();
//切換WiFi服務(wù)的狀態(tài)
await driver.toggleLocationServices();
//切換位置服務(wù)的狀態(tài)
await driver.sendSms('123456789', 'rpa');
//發(fā)送短信(僅模擬器)
await driver.gsmCall('123456789', 'call');
//撥打GSM 電話(僅模擬器)
await driver.gsmSignal(3);
//設(shè)置GSM 信號強大,信號強度在[0,4]范圍內(nèi)
await driver.gsmVoice('home');
//設(shè)置GSM 語音狀態(tài)(僅模擬器)
//參數(shù)1 GSM 語音狀態(tài)'unregistered'(未注冊), 'home'(家庭), 'roaming'(漫游),
'searching'(搜索), 'denied'(被拒絕), 'off'(關(guān)閉),'on'(打開).
await driver.toggleNetworkSpeed('lte');
//設(shè)置網(wǎng)絡(luò)速度(僅模擬器)
//參數(shù)1 網(wǎng)絡(luò)類型'full','gsm','edge','hscsd','gprs','umts','hsdpa','lte','evdo'
7.鍵盤操作
await driver.pressKeyCode(10);
//按Android 設(shè)備上的特定鍵
//參數(shù)一,特定按鍵碼值,4 為返回鍵。其他鍵值,自行百度搜索
await driver.longPressKeyCode(10);
//長按Android 設(shè)備上的特定鍵
await driver.hideKeyboard();
//隱藏軟鍵盤
await driver.isKeyboardShown();
//判斷是否顯示軟鍵盤,如果顯示鍵盤,返回True
8.欄目相關(guān)
await driver.openNotifications();
//打開通知欄
await driver.getSystemBars();
//返回狀態(tài)欄和導(dǎo)航欄的可見性信息
await driver.getDeviceTime();
//獲取系統(tǒng)時間,返回系統(tǒng)時間(字符串)
await driver.getDisplayDensity();
//返回整型,設(shè)備pid(像素密度)
await driver.fingerPrint(1);
//指紋識別(僅模擬器)
//存儲在Android Keystore 系統(tǒng)中的指紋(從1 到10)
9.觸屏/鼠標操作
(1)鼠標操作(部分設(shè)備不可用)
moveTo(10, 10);
//將鼠標移動指定元素的偏移位置
click();
//在當前鼠標坐標處單擊任意鼠標
doubleClick();
//雙擊元素
buttonDown();
//當前鼠標坐標處單擊并按住鼠標左鍵
buttonUp();
//釋放先前按住的鼠標按鈕
(2).觸屏操作
await driver.touchAction({
action: 'tap',
x: 30,
y: 20
});
//觸摸xy指定坐標點
await driver.touchDoubleClick(element.elementId);
//在指定元素上觸摸雙擊
//參數(shù),元素id
await driver.touchPerform([
{ action: 'press', options: { x: 100, y: 250 }},
{ action: 'wait',options: {ms: 100}},
{ action: 'moveTo', options: { x: 300, y: 100 }},
{ action: 'release' }
]);
//觸摸動作。action行為,options 行為參數(shù)
//行為:tap 點擊 press 短按 longPress 長按 wait 等待 moveTo滑動 release 釋放
//此函數(shù)涵蓋鼠標和觸屏操作,建議使用。 到10)
10.地理位置
await driver.getGeoLocation();
//獲取地理位置,返回值整型 緯度 經(jīng)度 高度
await driver.setGeoLocation({latitude: "121.21", longitude: "11.56", altitude: "94.23"});
//設(shè)置地理位置,latitude緯度 longitude經(jīng)度 altitude高度
11.系統(tǒng)剪切板
await driver.getClipboard();
//獲取系統(tǒng)剪貼板的內(nèi)容 返回值,base64編碼的字符串,如果剪貼板為空,則為空 字符串
var data = new Buffer.from("Ai-Bot").toString('base64');
await driver.setClipboard(data, 'plaintext');
//設(shè)置系統(tǒng)剪貼板的內(nèi)容,僅設(shè)置plaintext純文本
//參數(shù)1 字符串 base64編碼
12.App操作
await driver.startActivity("com.example", "ActivityName");
//通過app包名稱和活動名稱來啟動app 一般用于多個app控制
await driver.getCurrentActivity();
//返回當前app活動窗口的名稱
await driver.getCurrentPackage();
//返回當前app包的名稱
await driver.installApp("D: \\test.apk");
//安裝app
await driver.removeApp("com.example.AppName");
//通過包名 卸載應(yīng)用
await driver.isAppInstalled('com.example.AppName');
//檢查設(shè)備上是否安裝了指定的應(yīng)用程序,如果已安裝,返回true;否則,返回 false
await driver.launchApp();
//如果被測應(yīng)用關(guān)閉或在后臺運行 ,它將啟動被測應(yīng)用
await driver.background(10);
//將此會話當前運行的應(yīng)用程序發(fā)送到后臺,參數(shù)時間單位為秒
await driver.closeApp();
//關(guān)閉應(yīng)用
await driver.reset();
//重置此會話的正在運行的應(yīng)用
await driver.activateApp("com.example.AppName");
//通過包名 激活應(yīng)用
await driver.terminateApp('com.example.AppName');
//終止設(shè)備上指定的應(yīng)用
await driver.queryAppState('com.example.AppName');
//獲取設(shè)備上應(yīng)用狀態(tài)。
//返回值,0未安裝。1沒有運行。2在后臺運行或已暫停。 3在后臺運行。4正在前臺運行。
await driver.getStrings("en");
//獲取應(yīng)用程序所有的字符串。
await driver.getContext();
//獲取當前app是在NATIVE還是WEBVIEW環(huán)境
//返回當前環(huán)境的名稱
await driver.getContexts();
//獲取app環(huán)境集合
//返回所有環(huán)境的名稱(Array<String>
await driver.switchContext(contexts[1]);
//切換NATIVE或者WEBVIEW環(huán)境
//參數(shù)為 要更改環(huán)境的名稱
await driver.getPageSource();
//獲取當前的App層次結(jié)構(gòu)XML(應(yīng)用程序)或頁面源碼(Web)
//此方法獲取App層次結(jié)構(gòu),便于元素定位
13.元素操作
(1)元素定位
await driver.$("~content-desc");
//元素定位支持content-desc、className、UiSelector、XPath等方式
//content-desc,UI元素的唯一標識符,該方式需在屬性前加 "~" 波浪號
//className,類名定位,className屬性值重復(fù)較多
//UiSelector,使用UI Automator API定位,可設(shè)定多個條件定位,建議使用
//XPath定位,效率較低,但它是通用的定位方式
//查找元素失敗元素屬性elementId值為undefined,可用作是否查找成功
示例代碼:
//content-desc
await driver.$("~content-desc");
//className
await driver.$("className");
//UiSelector1
var selector ='new UiSelector().resourceId("resourceId")';
await driver.$(`android=${selector}`);
//UiSelector2
var selector ='new UiSelector().text("text").className("className").resourceId("resourceId")';
await driver.$(`android=${selector}`);
//XPath
await driver.$("http://android.widget.TextView[@text='Ai-Bot']");
(2)元素數(shù)組
await driver.$$("className");
//查找相同元素屬性值數(shù)組,查找方式同上
(3)元素方法
click();
//點擊元素中心點
addValue("Ai-Bot");
//發(fā)送字符串到元素
setValue("Ai-Bot");
//設(shè)置元素值
clearValue();
//清除元素值
await driver.elementSubmit(formElement.elementId);
//提交表單元素
//參數(shù)一,元素id
(4)元素屬性
getText();
//返回元素的可見文本
getTagName();
//獲取標簽名稱
getAttribute("content-desc");
//獲取元素指定屬性的值,如果未設(shè)置返回 null
isSelected();
//判斷元素是否被選擇,返回值,boolean類型
isEnabled();
//判斷當前元素是否可用,返回值,boolean類型
isDisplayed();
//判斷當前元素是否可見,返回值,boolean類型
getLocation();
//獲取元素在頁面或屏幕上的頂點坐標,返回x、y,整型
getSize();
//獲取元素寬和高,返回width、heigh
await driver.getElementRect(element.elementId);
//獲取元素位置,返回x、y、width、height,矩形位置和大小
//參數(shù)1,元素id
getCSSProperty("style");
//獲取元素指定的CSS屬性值
await driver.getElementLocationInView(element.elementId);
//獲取元素在頁面或屏幕上的頂點坐標,返回x、y坐標,整型
await driver.getActiveElement();
//獲取當前會話的活動元素
isEqual(element);
//判斷指定元素與參數(shù)一是否引用同一個元素,返回值,boolean類型
//參數(shù)一,元素object
14.文件操作
var data = new Buffer.from("Hello World").toString('base64');
await driver.pushFile('/data/local/tmp/file.txt', data);
//上文件到設(shè)備
//參數(shù)一,文件路徑
//參數(shù)二,base64格式的字符串
await driver.pullFile('/data/local/tmp/file.txt');
//獲取設(shè)備上文件內(nèi)容,返回值base64格式的字符串
await driver.pullFolder('/data/local/tmp/');
//獲取設(shè)備指定文件夾,返回 Base64編碼的字符串,文件格式為zip
15.執(zhí)行adb
await driver.executeAsync('mobile: shell', {'command':'screencap -p /sdcard/app.png'});
//異步執(zhí)行命令
await driver.execute('mobile: shell', {'command':'screencap -p /sdcard/app.png'});
//執(zhí)行adb命令示例
16.批量執(zhí)行
const script = `
let destElement = await driver.$('//android.widget.TextView[@text='移動網(wǎng)絡(luò)']');
await destElement.click();`;
await driver.driverScript(script);
//執(zhí)行多條命令
//此指令能提高腳本效率
17.web/窗口操作
await driver.switchToWindow("handle");
//將焦點切換另一個窗口
await driver.closeWindow();
//關(guān)閉當前窗口
await driver.getWindowHandle();
//獲取當前窗口句柄
await driver.getWindowHandles();
//獲取所有窗口句柄列表
await driver.getTitle();
//獲取當前頁面標題
await driver.getWindowRect();
//獲取窗口的位置
await driver.setWindowRect(0, 0, 800, 600);
//設(shè)置窗口位置
await driver.getWindowSize();
//獲取窗口大小
await driver.setWindowSize(10, 10);
//設(shè)置窗口大小
await driver.maximizeWindow();
//最大化窗口
await driver.url("http://www.ai-bot.net");
//打開新的URL
await driver.getUrl();
//獲取當前頁面url
await driver.back();
//返回
await driver.forward();
//前一頁
await driver.refresh();
//刷新
await driver.getCookies();
//獲取cookie
await driver.setCookies([{
name: 'myCookie',
value: 'some content'
}]);
//設(shè)置Cookie
await driver.deleteCookies("cookie_name");
//刪除指定名稱的cookie
await driver.deleteCookies();
//刪除當前頁面所有的cookie
await driver.switchToFrame(3);
//切換指定iframe
await driver.switchToParentFrame();
//切換父iframe
ai-bot rpa官方網(wǎng)址:www.ai-bot.net