99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀移動(dòng)端自動(dòng)化 AutoJS 快速入門(mén)指南(上)
移動(dòng)端自動(dòng)化 AutoJS 快速入門(mén)指南(上)
2021-11-02
收藏
移動(dòng)端自動(dòng)化 AutoJS 快速入門(mén)指南(上)

來(lái)源:AirPython

作者:星安果

1. 前言

大家好,我是安果!

之前寫(xiě)過(guò)很多 App 端自動(dòng)化的文章,大都基于 Appium、Airtest、無(wú)障礙服務(wù)等技術(shù)來(lái)實(shí)現(xiàn)的

其中,Appium 和 Airtest 編寫(xiě)的自動(dòng)化腳本都依賴于 PC 端運(yùn)行,沒(méi)有辦法直接運(yùn)行在移動(dòng)端;無(wú)障礙服務(wù)需要單獨(dú)創(chuàng)建一個(gè) Android 項(xiàng)目,沒(méi)有完整的使用文檔,使用起來(lái)有一定的門(mén)檻

從本篇文章開(kāi)始,介紹一款可以直接運(yùn)行在移動(dòng)端的自動(dòng)化工具:AutoJS

2. AutoJS 介紹

AutoJS 類(lèi)似于按鍵精靈,它是 Android 平臺(tái)上的一款自動(dòng)化工具,它通過(guò)編寫(xiě) JavaScript 腳本,結(jié)合系統(tǒng)的「 無(wú)障礙服務(wù) 」對(duì) App 進(jìn)行自動(dòng)化操作

它的優(yōu)勢(shì)包含:

  • 使用 JS 編寫(xiě)腳本,代碼可讀性強(qiáng)
  • 腳本文件體積小,可以打包成 APK 直接安裝
  • 擁有豐富的 UI 組件用于構(gòu)建 GUI 界面
  • 非 Root 設(shè)備也能完成自動(dòng)化操作,可以擺脫 PC 直接運(yùn)行
  • 提供多種元素定位方式,可以適配各種機(jī)型
  • 官方文檔非常詳細(xì),學(xué)習(xí)成本低

3. 準(zhǔn)備

AutoJS 擁有多個(gè)版本,其中最常用的兩個(gè)版本分別是:Auto.js Pro、Auto.js 4.1.1 Beta

PS:由于某些原因,AutoJS 作者現(xiàn)在只對(duì) Auto.js Pro 版本進(jìn)行維護(hù),并且 Auto.js Pro 對(duì)部分主流 App 進(jìn)行了限制

后面的文章都是以 Auto.js 4.1.1 Beta 為例進(jìn)行講解( 文末有提供下載方式 )

首先,下載 VS Code 軟件和 2 個(gè)插件

2 個(gè)插件包含:

  • Auto.js-VSCodeExt
  • Auto.js-VSCodeExt-Fixed

其中,Auto.js-VSCodeExt-Fixed 對(duì)插件 Auto.js-VSCodeExt 進(jìn)行了部分優(yōu)化,更加方便我們調(diào)試腳本

然后,使用 VS Code 快捷鍵「 Ctrl/Command + Shift + P 」,選擇「 Auto.js:Start Server 」開(kāi)啟 AutoJS 服務(wù)

接著,在真機(jī)或模擬器安裝 AutoJS 應(yīng)用及 AutoJS 打包工具應(yīng)用

PS:如果使用模擬器,推薦使用網(wǎng)易 MuMu 或雷電模擬器

打開(kāi) AutoJS 應(yīng)用,首次進(jìn)入應(yīng)用關(guān)閉更新提示對(duì)話框,并按照指引開(kāi)啟「 無(wú)障礙服務(wù) 」

移動(dòng)端自動(dòng)化 AutoJS 快速入門(mén)指南(上)

在軟件主界面,點(diǎn)擊左上角滑出側(cè)邊欄,依次打開(kāi)無(wú)障礙服務(wù)、前臺(tái)服務(wù)、懸浮窗

前臺(tái)服務(wù)用于提升服務(wù)的存活率,防止服務(wù)被回收掉

移動(dòng)端自動(dòng)化 AutoJS 快速入門(mén)指南(上)

懸浮窗會(huì)懸浮在任意界面之上,提供一些快捷功能操作,具體包含:

  • 文件項(xiàng)目列表會(huì)展示示例代碼及自己編寫(xiě)的腳本、文件夾,可以快速完成腳本編輯、運(yùn)行、定時(shí)任務(wù)、打包等操作
  • 腳本錄制錄制腳本,僅適用于 Root 后的設(shè)備,由于它基于坐標(biāo)點(diǎn),適配性不強(qiáng),所以很少使用
  • 元素控件定位針對(duì)當(dāng)前界面進(jìn)行布局控件分析、布局層次分析
  • 關(guān)閉正在執(zhí)行的腳本一鍵停止所有正在執(zhí)行的腳本任務(wù)
  • 更多設(shè)置可以快速進(jìn)入到「無(wú)障礙服務(wù)」頁(yè)面、查看當(dāng)前應(yīng)用包名及 Activity 名稱等

最后,選中軟件側(cè)邊欄中的「 連接電腦 」這一項(xiàng),在對(duì)話框中輸入 PC 的 ip 地址

PS:AutoJS 連接電腦時(shí)如果沒(méi)有報(bào)錯(cuò),VS Code 通知欄和 OUTPUT 會(huì)展示設(shè)備連接成功的消息

移動(dòng)端自動(dòng)化 AutoJS 快速入門(mén)指南(上)

4. 實(shí)戰(zhàn)一下

在完成上面的準(zhǔn)備工作后,我們就可以在 VS Code 中使用 JS 編寫(xiě)自動(dòng)化腳本了

這里以自動(dòng)刷抖音短視頻為例

首先,使用「 auto.waitFor() 」確保無(wú)障礙服務(wù)開(kāi)啟成功

然后,使用 launchApp + 應(yīng)用名稱,快速啟動(dòng)抖音 App

接著使用界面元素內(nèi)容 + waitFor() 方法等待元素出現(xiàn),代表界面加載完成

最后,使用 Root + Swipe + 坐標(biāo)點(diǎn)模擬界面滑動(dòng)

PS:這里為了方便,直接使用 Root 設(shè)備的 API 方法,如果是非 Root 設(shè)備,可以采用官方提供的滑動(dòng) API 或控件中心坐標(biāo)點(diǎn)擊事件來(lái)實(shí)現(xiàn)

完整代碼如下:

auto.waitFor()
//打開(kāi)抖音App
var appName = 
"抖音";
(appName);
//等待進(jìn)入主界面成功
text("首頁(yè)").waitFor();
toast("準(zhǔn)備開(kāi)始滑動(dòng)")
//滑動(dòng)(Root+坐標(biāo)點(diǎn))
while (true) {
Swipe(200, 1000, 210, 400, 500);
//休息5s鐘
sleep(5000);
toast("繼續(xù)滑動(dòng)。。。")
}

5. 最后

本篇文章介紹了 AutoJS 最基礎(chǔ)的使用步驟,并通過(guò)一個(gè)簡(jiǎn)單的實(shí)例講解其用法

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }