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
電氣工程及其自動化問題與對策
我國機械設計制造及其自動化的現狀及發展趨勢
淺論節能設計理念在機械制造與自動化中的應用
簡析火力發電廠熱工自動化儀表應用及故障排除方法
配網自動化實用化模式建設及系統運行
主站蜘蛛池模板: 欧美有码在线| 国产成人无码久久久久毛片| 国产网站免费看| 国产农村1级毛片| 欧美激情网址| 狠狠ⅴ日韩v欧美v天堂| 国产成人夜色91| 亚洲有无码中文网| 日本色综合网| 欧美激情第一区| 日韩成人午夜| 国产一区二区人大臿蕉香蕉| 毛片免费在线| 亚洲性影院| 亚洲伊人电影| 亚洲系列无码专区偷窥无码| 国产亚洲现在一区二区中文| 欧美成人精品一级在线观看| 国产成人精品一区二区三区| 丁香婷婷综合激情| 国产第一页免费浮力影院| 亚洲av无码人妻| 国产熟女一级毛片| 国产在线观看第二页| 日本www在线视频| 国产区免费| 老司机久久99久久精品播放| 亚洲欧美精品在线| 亚洲精品手机在线| 亚洲一区二区三区国产精品| 久久国产V一级毛多内射| 黄色片中文字幕| 伊伊人成亚洲综合人网7777| 国产91小视频| 亚洲丝袜第一页| 欧美激情二区三区| 国产成人一级| 欧美成人A视频| 中文纯内无码H| 四虎成人免费毛片| 99人妻碰碰碰久久久久禁片| 欧美不卡视频一区发布| 中文字幕日韩丝袜一区| 蜜臀AV在线播放| 亚洲 欧美 偷自乱 图片| 国产永久在线观看| a级毛片免费网站| 99999久久久久久亚洲| 国产欧美在线视频免费| 午夜人性色福利无码视频在线观看| 黄片在线永久| 中文成人无码国产亚洲| 日本午夜影院| 9cao视频精品| 国产成人亚洲精品蜜芽影院| 欧美精品v日韩精品v国产精品| 精品国产一二三区| 亚洲欧美国产视频| 亚洲欧美不卡中文字幕| 免费av一区二区三区在线| 狼友视频一区二区三区| 白浆免费视频国产精品视频| 国产精品妖精视频| 美女内射视频WWW网站午夜| 欧美精品xx| 88av在线播放| 亚洲成a人在线观看| 午夜福利视频一区| 一本无码在线观看| 国产丝袜精品| 精品亚洲国产成人AV| 国产香蕉在线视频| 久久综合干| 久草热视频在线| 国产成+人+综合+亚洲欧美| 日本一区中文字幕最新在线| 在线观看国产精品日本不卡网| 国产性爱网站| 国产女人18水真多毛片18精品| 欧美午夜精品| 亚洲精品无码久久久久苍井空| 国产成人高清亚洲一区久久|