長春大都市歡迎您!
長春大都市>美食>正文

android如何自動切換后臺app

2020-03-29 08:44:13 來源: 閱讀:-

在做 android 前端性能自動化測試時,你是否經歷過這樣的場景:依次啟動 A、B、C 三個 app,其中 C 是被測 app, 當當前屏幕切換到 B 進行相關操作后,如何通過封裝方法實現自動切換會已經處于后臺進程模式的被測 app 進程 C 呢?

我的實現思路大體是這樣的。

1

首先封裝點擊鍵盤 menu 鍵操作,代碼如下所示:

public static void tapDeviceMenu(String udid){String cmdMenu = "adb -s "+udid+" shell input keyevent KEYCODE_MENU";CmdUtils.executeCmd(cmdMenu);}

2

當前界面處于進程切換情況下,可以通過點當前屏幕的中點實現切換到進程 C 的預期效果,封裝點擊當前屏幕中點方法,代碼如下所示:

public static void screenTapCenter(String udid){List<String> list = AppiumUtil.getResolution(udid);if(list.size() == 2){String width = list.get(0);String height = list.get(1);String cmdTapCenter = "adb -s "+udid+" shell input tap "+(Integer.valueOf(width)/2)+" "+(Integer.valueOf(height)/2);CmdUtils.executeCmd(cmdTapCenter);} }

3

不同的手機設備屏幕分辨率是不同的,如何兼容不同手機獲取中點坐標呢?封裝方法如下:

public static List<String> getResolution(String udid){String cmdStr = "adb -s "+ udid +" shell wm size";List<String> strList = CmdUtils.executeCmd(cmdStr);List<String> list = new ArrayList<String>();for( int i = 0; i< strList.size(); i++){if( strList.get(i)!=null && !strList.get(i).isEmpty() ){list = StringMatchUtils.getMatchers("Physical size: (\\d{1,})x(\\d{1,})", strList.get(i),2);} }return list; }

4

對應的 adb 命令有哪些呢?

>adb shell input keyevent KEYCODE_MENU>adb shell input tap 中點橫坐標中點縱坐標Ⅴ注意,該方法僅適用于安卓設備啟動 3 個應用,并且啟動順序是 A、B、C,并且 B 這個 App處于當前界面情況下如何切換到 C 情況下。這里還涉及到獲取 dos 命令返回結果以及正則匹配指定字符串,這兩個方法封裝較常見,在這里就不再贅述了。

作  者:Testfan 恨水

出  處:微信公眾號:自動化軟件測試平臺

版權說明:歡迎轉載,但必須注明出處,并在文章頁面明顯位置給出文章鏈接

本文為企業推廣,本網站不做任何建議,僅提供參考,作為信息展示!

推薦閱讀:超聲波除螨器

網友評論
請登錄后進行評論| 0條評論

請文明發言,還可以輸入140

您的評論已經發表成功,請等候審核

小提示:您要為您發表的言論后果負責,請各位遵守法紀注意語言文明

回到首頁 回到頂部
長春大都市 關于我們| 聯系我們| 招聘信息| 老版地圖| 網站地圖
免責聲明:長春大都市所有文字、圖片、視頻、音頻等資料均來自互聯網,不代表本站贊同其觀點,本站亦不為其版權負責。相關作品的原創性、文中陳述文字以及內容數據龐雜本站無法一一核實,如果您發現本網站上有侵犯您的合法權益的內容,請聯系我們,本網站將立即予以刪除!
Copyright © 2012-2019 http://www.739683.tw, All rights reserved.
福建今晚36选7开奖结果今天