什么是Ai-Bot?

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容