android如何自动切换后台app

2020年03月23日 08:28:17   [来源:互联网]   [阅读:1935]
字体:【

在做 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 恨水

出  处:微信公众号:自动化软件测试平台

版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接

推荐阅读:苹果x和xr哪个好


相关新闻
新闻焦点
我是歌手新一季第二期一开头,吴青峰到好友萧敬腾家做客。或许是对萧敬腾的豪宅早有耳闻,吴青峰先是在门口暗中观察:见面后,看他俩背后门口的院子:最后[更多]
前几天小主不是剧荒求解救么,结果在后台被安利了好多剧,里面呼声最高的就是《锦衣之下》讲真这部剧小主一开始也是追过半集的,男主的出场方式有点惊悚,[更多]
其实在生活中每个人都有自己的定位和舞台,站在自己的舞台上,自己就是主角。但是如果站错了舞台的话,那么自己就成了别人的配角。生活中有很多这样的例子[更多]
任素汐,一位相貌平平的好演员,不曾惊艳了谁的岁月,但拥有最真实的,最鲜活的灵魂。2012年,主演话剧《驴得水》,凭借此片在2016年荣获腾讯视频[更多]
关于我们 | 联系我们 | 老版地图 | 网站地图 | 版权声明
版权所有:中华辽宁网未经授权禁止复制或建立镜像
相关作品的原创性、文中陈述文字以及内容数据庞杂本站无法一一核实,如果您发现本网站上有侵犯您的合法权益的内容,请联系我们,本网站将立即予以删除!
中国互联网违法和不良信息举报中心 网络警察报警岗亭