android如何自动切换后台app
在做 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 恨水
出 处:微信公众号:自动化软件测试平台
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接
android如何自动切换后台app的更多相关文章
- 【转】Android横竖屏切换问题
Android横竖屏切换总结(Android资料) Android横竖屏要解决的问题应该就两个: 一.布局问题 二.重新载入问题 1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的 ...
- Android横竖屏切换总结
Android横竖屏切换总结(Android资料) Android横竖屏要解决的问题应该就两个: 一.布局问题 二.重新载入问题 1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的 ...
- 高仿优酷Android客户端图片左右滑动(自动切换)
本例是用ViewPager去做的实现,支持自动滑动和手动滑动,不仅优酷网,实际上有很多商城和门户网站都有类似的实现: 具体思路: 1. 工程中需要添加android-support-v4.jar,才能 ...
- Android瀑布流优化,解决Recyclerview展示大批量图片时Item自动切换、闪烁、空白等问题
本文涉及的代码案例可以在下方的链接中找到,如果对你有帮助,请给个Star(#^.^#) https://github.com/CodeTillDoom/StaggeredRcl 问题分析 这段时间业务 ...
- Android借助Handler,实现ViewPager中页面的自动切换(转)
在很多电商网页及app上都有自动切换的商品的推广快,感觉体验挺不错的,正好今天学习使用ViewPager,因此也实现了一个功能类似的demo. 下面是其中的两个截图: 实现一个自动 ...
- Android中仿淘宝首页顶部滚动自定义HorizontalScrollView定时水平自动切换图片
Android中仿淘宝首页顶部滚动自定义HorizontalScrollView定时水平自动切换图片 自定义ADPager 自定义水平滚动的ScrollView效仿ViewPager 当遇到要在Vie ...
- 在Android中自动实现横竖屏切换的问题
http://developer.android.com/training/basics/supporting-devices/screens.html参照Google推荐的做法 在你项目的res 文 ...
- Android N(7.0) 在ListView里显示EditText时软键盘弹出时会自动切换到全键盘的问题?
Android N(7.0) 在ListView里显示EditText时软键盘弹出时会自动切换到全键盘的问题? 问题症状描述 Activity 在AndroidManifest.xml里设置andro ...
- Android横竖屏切换
ps:虽然现在的app一般都是固定一个屏幕方向,但是还是有必要了解下屏幕切换的方法和注意. 一 固定横竖屏 androidmainfest.xml中设置activoty属性:android:scree ...
随机推荐
- avast关闭DeepScreen
在“设置”-“防病毒”-去掉“启用 DeepScreen”.
- 记一次排查mysql数据库连接未关闭问题的过程
在一些项目中由于一些特殊原因仍然保留着显示的获取数据库连接(Connection).提交事务.回滚事务.关闭连接等操作:其中关闭连接是比较容易疏忽又比较难在前期发现的问题. 我是如何排查连接未关闭的问 ...
- Docker的数据管理(volume/bind mount/tmpfs)
Docker提供了三种不同的方式用于将宿主的数据挂载到容器中:volumes,bind mounts,tmpfs volumes.当你不知道该选择哪种方式时,记住,volumes总是正确的选择. vo ...
- C#ModBus Tcp
C#ModBus Tcp 报文解析 上一篇博客已经完成 C#ModBus Tcp Master的实现 本篇主要对不同的功能码所发出的报文进行解析(包括请求报文及响应报文) 读操作 功能码 0x01 ...
- Web工作方式
我们平时浏览网页的时候,会打开浏览器,输入网址后按下回车键,然后就会显示出你想要浏览的内容.在这个看似简单的用户行为背后,到底隐藏了些什么呢? 对于普通的上网过程,系统其实是这样做的:浏览器本身是一个 ...
- Opencv 简单视频播放器
// C++ header and namespace #include <iostream> #include <string> #include <cstdlib&g ...
- 二叉树(Java实现)
一.常见用语 1.逻辑结构:描述数据之间逻辑上的相关关系.分为线性结构(如,字符串),和非线性结构(如,树,图). 2.物理结构:描述数据的存储结构,分为顺序结构(如,数组)和链式结构. 3.结点的度 ...
- python使用xlutils库save()之后,文件损坏
import xlrd from xlutils.copy import copyworkbook=xlrd.open_workbook('test.xlsx')##打开excel为 .xlsx格式w ...
- http请求之of_ordering_http_get
//Public function of_ordering_http_get (string as_url) returns string //string as_urllong ll_tempstr ...
- lua与c的交互(函数专用)
Lua与C的交互 Lua是一个嵌入式的语言,它不仅可以是一个独立运行的程序,也可以是一个用来嵌入其它应用的程序库. C API是一个C代码与Lua进行交互的函数集,它由以下几部分构成: 1. 读写L ...