999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于adb命令的安卓自動化測試框架

2017-09-06 20:24:40仲林霖
科學與財富 2017年24期
關鍵詞:自動化

仲林霖

摘要:本文主要介紹了一個可以執行安卓自動化測試的方法,使用adb命令調試手機。通過adb命令獲取手機界面元素,發送動作指令給手機。

關鍵詞:安卓 adb 自動化

1. 引言

Android系統已經占據智能移動設備市場80%以上的份額,所以相應的對于app的測試也尤為重要,而自動化測試又是一個效率高、及其節省人力的方法。現在市場上的測試框架用的比較多的是Appium。雖然Appium框架功能相對比較齊全,但是Appium的框架比較重,相關的文檔指導比較少,所以使用起來,學習成本也高。本文所描述框架,主要是簡化測試框架、提高執行效率。

2. 關于adb的基礎

Android 調試橋 (adb) 是一個通用命令行工具,其允許您與模擬器實例或連接的 Android 設備進行通信。它可為各種設備操作提供便利,如安裝和調試應用,并提供對 Unix shell(可用來在模擬器或連接的設備上運行各種命令)的訪問。該工具作為一個客戶端-服務器程序,包括三個組件:

客戶端,該組件發送命令。客戶端在開發計算機上運行。您可以通過發出 adb 命令從命令行終端調用客戶端。

后臺程序,該組件在設備上運行命令。后臺程序在每個模擬器或設備實例上作為后臺進程運行。

服務器,該組件管理客戶端和后臺程序之間的通信。服務器在開發計算機上作為后臺進程運行。

3. 自動化框架

此框架只支持測試安卓app,是基于adb命令功能的封裝,在執行效率上有了很大提升。

1)尋找目標控件

控件屬性包含:text、resource-id、class、package、content-desc、checkable、checked、clickable、enable、focusable、focused、scrollable、long-clickable、password、selected、bounds。尋找的條件可以是上面列出屬性的其中一個,或者多個組合。用java代碼舉例:

Map condition = new HashMap<>();

condition.put("text", "valueText");

condition.put("resource-id", "valueResourceid");

condition.put("content-desc", "valueContentDesc");

根據條件尋找控件,這里首先把手機界面的結構dump出來,在進行XML解析,然后再逐個和尋找目標條件比對。

2)點擊目標控件,輸入文本,返回、home、menu

a. 獲取目標控件的信息后,取得位置,然后使用adb發送點擊位置的指令。用java代碼舉例:

String bounds = targetElement.attributeValue("bounds");

ArrayList listInt = new ArrayList<>();

String number = "";

for (int i = 0; i < bounds.length(); i++) {

if (Character.isDigit(bounds.charAt(i))) {

number += bounds.charAt(i);

} else {

if (!number.equalsIgnoreCase("")) {

listInt.add(Integer.valueOf(number));

number = "";

}

}

}

int left = listInt.get(0);

int top = listInt.get(1);

int right = listInt.get(2);

int bottom = listInt.get(3);

String cmd = "adb shell input tap " + String.valueOf(right - left) + " " + String.valueOf(bottom - top);

Runtime.getRuntime().exec(new String[]{"/bin/bash", "-c", cmd});

b. 往控件里面輸入文本,需要輸入框首先獲取光標,然后再使用adb命令發送輸入文本指令。用java代碼舉例:

String cmd = "adb shell input text " + text;

Runtime.getRuntime().exec(new String[]{"/bin/bash", "-c", cmd})

c. 輸入返回、Home、Menu實體按鍵,使用adb命令發送按鍵指令。用java代碼舉例:

返回鍵:

Runtime.getRuntime().exec(new String[]{"/bin/bash", "-c", "adb shell input keyevent 4"});

Home鍵:

Runtime.getRuntime().exec(new String[]{"/bin/bash", "-c", adb shell input keyevent 3});

Menu鍵:

Runtime.getRuntime().exec(new String[]{"/bin/bash", "-c", adb shell input keyevent 1});

4. 實例分析

自動化框架的點擊、輸入文本、實體按鍵直接封裝成方便方法,比如需要點擊某個resource-id為“abc”的控件,可以使用方法“clickByResId("abc")”來實現功能,一行代碼就足夠,可以使大大減少自動化腳本的編輯成本。

在運行自動化腳本的過程中,會存在要操作的控件還沒有出現在安卓手機上,這時候需要有一個循環等待的機制來解決這個問題,在控件沒有找到的時候,就一直等待,直到目標控件。這種循環等待機制會大大增加腳本的魯棒性。

在測試安卓手機的過程中,會出現很多權限請求的彈窗,影響腳本繼續往下執行,即使有循環等待機制,也會因為彈窗不處理而無限等待下午。針對這個問題,可以在執行測試腳本的同時,新開一個線程輪訓地去檢查安卓手機界面是否有彈窗,一旦發現彈窗就點擊授權跳過。因為主測試進程沒有找到目標控件會一直等待,所以彈窗點擊授權之后,就可以繼續進行測試。以java代碼舉例:

new Thread(new Runnable() {

@Override

public void run() {

while (true) {

if (hasObject("權限請求"){

clickByText("允許");

}

Thread.sleep(1000);

}

}

}).start();

5. 結語

通過自動化框架,可以提高編輯腳本的效率,降低腳本出錯的概率,幫助缺少開發經驗的軟件測試人員更容易地書寫測試腳本,推進自動化測試。

參考文獻

[1] 鄭婷婷,黃英持,Android應用的多設備自動化測試實現[J].軟件導刊,2016(02)

猜你喜歡
自動化
國內焊接設備市場現狀及發展趨勢研究
經營者(2016年12期)2016-10-21 07:39:01
供電企業電力自動化主站系統研究
錦界煤礦連采膠帶機集控系統的介紹
供熱站自動控制系統中PLC的應用
AGV小車在白酒行業自動化立體倉庫中的應用
中國市場(2016年36期)2016-10-19 03:40:15
電氣工程及其自動化問題與對策
我國機械設計制造及其自動化的現狀及發展趨勢
淺論節能設計理念在機械制造與自動化中的應用
簡析火力發電廠熱工自動化儀表應用及故障排除方法
配網自動化實用化模式建設及系統運行
主站蜘蛛池模板: 国产欧美视频综合二区| 午夜毛片免费观看视频 | 国产丝袜啪啪| 97精品国产高清久久久久蜜芽| 91无码视频在线观看| 日韩午夜片| 国产主播福利在线观看 | 香蕉伊思人视频| 国内精自视频品线一二区| 91成人免费观看在线观看| 超碰91免费人妻| 午夜无码一区二区三区在线app| 欧美成人影院亚洲综合图| 日韩性网站| 中文字幕在线观看日本| 亚洲自拍另类| 亚洲欧美成人综合| 成人日韩欧美| 国产女人在线| 久草视频中文| 99久久精品视香蕉蕉| 91麻豆精品视频| 亚洲欧美日韩久久精品| 制服无码网站| 超清无码熟妇人妻AV在线绿巨人| 国产成人艳妇AA视频在线| 亚洲三级影院| av一区二区三区在线观看| 囯产av无码片毛片一级| 亚洲二区视频| 人妻无码中文字幕第一区| 一本大道无码日韩精品影视| 国产美女免费网站| 美臀人妻中出中文字幕在线| 亚洲视频免费在线看| 性欧美久久| 成人夜夜嗨| 国产成人午夜福利免费无码r| 日韩国产一区二区三区无码| 黄色网址手机国内免费在线观看| 欧美午夜理伦三级在线观看| 国产精品免费福利久久播放| 三上悠亚精品二区在线观看| 天天色综网| 成人国产免费| 露脸真实国语乱在线观看| 影音先锋丝袜制服| 中文字幕永久在线观看| 制服丝袜一区| 毛片网站在线播放| 91青青在线视频| 91福利国产成人精品导航| 国产成人一区免费观看| 欧美成人一级| 亚洲色精品国产一区二区三区| 九九九精品视频| 美女无遮挡免费网站| 亚洲精品少妇熟女| 国产剧情国内精品原创| 无码福利视频| 91亚瑟视频| 国产视频自拍一区| 波多野结衣一区二区三区四区 | 亚洲无码高清一区二区| 热这里只有精品国产热门精品| 一本大道无码日韩精品影视| 日本国产精品一区久久久| 欧美高清三区| 亚洲日本韩在线观看| 亚洲中文字幕日产无码2021| 亚洲av无码久久无遮挡| 国产成人亚洲无码淙合青草| 在线国产综合一区二区三区| 99偷拍视频精品一区二区| 一级毛片免费观看久| 91午夜福利在线观看精品| 精品国产91爱| 国产va免费精品观看| 欧美一区二区精品久久久| 色综合五月婷婷| 亚洲一区二区三区香蕉| 亚洲日本一本dvd高清|