Adb-for-test简单使用

原创 2016年07月24日 20:55:27

Adb-for-testpythonjava版本,github地址:https://github.com/gb112211/Adb-For-Test 

定位元素方式也是使用dump当前activity树结构:

 

元素获取就是通过解析dump文件内容查找元素,可能速度上比appium快很多。

当然可以使用他这个工具完成部分与appium基本相同的功能。

我使用他这个工具,实现了自定义几个Activity界面内的monkey测试

1.因为monkey测试的随机无序性,导致可能部分界面可能永远都无法进入,或者几率很小,所以要实现有些界面内是否稳定,要自定义几个界面内的测试。

2.由于公司使用插件化要跑几个插件包,自定义界面内monkey测试也是很必须的,还有集成测试时插件之间的稳定性也是必要的。

3.可能会找到一些ui问题,兼容问题等,所以要进行自定义monkey测试。

配置项:

目前想到的配置项是写在一个json结构体内的:

 

PackageName表示你要测试的包名是什么。

PackageActivity表示你要启动的Activity是什么。

WhiteList表示你要自定义Monkey测试哪些Activity界面。

BlackList表示哪些Activity界面你不想要进行测试,当然可以不写。

TestMain表示你要进入某个页面的名字,然后我会在解析json时判断名字然后执行操作步骤进入这个界面。

 

执行操作:

1.循环读取当前activity,获取activity我自己写了一个方法:


先查看当前包名的activity是否存在,如果为空,则表示不存在:

首先杀掉应用。(如果应用程序被置于后台后,也是会先杀掉应用,暂时还不知道怎么利用adb将后台应用启动的方法,后期研究,或者大家有知道的可以告诉我)。然后再启动Activity

2.将设置好的whiteListblackList与当前的获取的Activity进行对比。

3.如果判断当前界面Activity不在whiteList中直接执行返回操作,每次都会执行返回操作,直到存在则进行monkey操作。

4.执行monkey操作过程:

使用随机数,根据随机数进行不同的操作:

 

5.自定义进入界面:

 

每次启动应用之后都会进入某个界面,根据testMain定义的名字,传给runByModuleName处理:

 

根据名字执行不同的操作进入某个页面。

 

大致简单的实现的monkey测试。所有操作都是使用adb-for-test框架提供的封装好的adb命令实现的。可能在实际操作过程会出现某个页面弹出浮层对话框,现在我是通过判断界面是否存在然后进行点击,如下示例:

 

改进点:

1.正如上边说的:如果应用程序被置于后台后,我会杀掉应用,然而可能会有一些问题,假如用户那一刻后台又启动了它,正好崩溃,那这种情况可能就没有考虑到了,后期优化。

2.自定义进入某个页面,我是写好了json,后期可能公司其他业务测试可能也会用这个工具,runByModuleName下就应该变成各业务线人员可以很方便的添加自己的脚本,后期想想有什么好办法。

3.根据自动遍历工具思路,设计出适合自己的自动测试内容。自动遍历工具:https://testerhome.com/topics/4645 

 

解决小米等手机安装应用弹出框等问题。

使用adb-for-test工具进一步优化了小米系手机adb shell input text内容时,假如你当前手机输入法是其他输入法并且是中文输入法下,然后可能输入不上内容的问题。如下:

 

解决方法是安装appium自带的输入法apk包,可以在F:\Appium\AppiumForWindows-1.2.0.1\node_modules\appium\build\unicode_ime_apk这里找到。

1.具体步骤:

(1)查看appium输入法是否在系统输入法中。

通过命令:adb shell ime list -s|findstr io.appium.android.ime/.UnicodeIME 查看

(2)再查看应用apk是否安装。有时候通过以上命令并不能查看到,但是确实是已经安装了应用程序,这是因为小米手机权限问题,可以进入输入法界面查看到:

 

默认如果安装了apk在输入法设置界面并未勾选上,这应该就是通过上面命令无法查看到的原因了。查看应用是否已经安装了:adb shell pm list package|findstr io.appium.android.ime

(3)如果上面两步中都未取到值,则就要安装appium的输入法了。

 

使用上边代码在安装的时候就会弹出是否继续安装的弹出框啦:

 

然后通过框架带的查找控件方法查找继续安装按钮,并定位,然后点击它:

 

(4)最后切换为appium的输入法:

Adb shell ime set io.appium.android.ime/.UnicodeIME

 

 

 

 

完全使用adb,aapt 获取已安装apk的各种信息

http://blog.csdn.net/wanliaixie/article/details/8864686 有很多朋友问能不能只通过ADB 去获取手机中已安装的应用版本等等信息,我找到了一种有点...
  • victoryckl
  • victoryckl
  • 2013年05月20日 16:24
  • 11686

adb操作命令详大全&利用adb命令查看apk文件包名

adb是什么?:adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方面通过DDMS来调试android程序,说白了就是debug工具...
  • m0_37615390
  • m0_37615390
  • 2017年08月08日 17:03
  • 2220

用adb取出在手机中安装的apk

第一步:列出所有安装的apk adb shell pm list packages 然后找到自己要取出来的apk的包名。第二布:找到apk的位置(后面跟上包名) adb shell pm p...
  • lang523493505
  • lang523493505
  • 2016年10月23日 12:59
  • 1303

adb_operate_test

  • 2015年05月27日 10:47
  • 38KB
  • 下载

使用Google Test的一个简单例子

0. 引子   本例是从 gtest-1.5.0 自带的 sample 中的 sample1 改写而来,笔者只添加了一个求 n 的阶层的函数,如下。 void Factorial(i...
  • u010229420
  • u010229420
  • 2016年06月29日 20:23
  • 1306

使用Google Test的一个简单例子

本博客http://blog.csdn.net/livelylittlefish 贴出作者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正! 0. 引子   本例是从gtest-1....
  • livelylittlefish
  • livelylittlefish
  • 2011年01月17日 23:13
  • 6663

va_list可变参数简单使用test

3个宏* va_start * va_arg * va_end 这三个宏都在stdarg.h的头文件中被定义好了,只需添加该头文件即可使用,非常方便,下面就开始介绍如何使用这3个宏。va_...
  • aksfhks
  • aksfhks
  • 2015年07月07日 14:49
  • 843

ural 2002. Test Task 简单模拟 stl map的使用

2002. Test Task Time limit: 0.5 second Memory limit: 64 MB It was an ordinary grim Octobe...
  • u013532224
  • u013532224
  • 2015年02月12日 14:41
  • 357

Mac 上使用 Shell 脚本 + adb shell 实现简单的 Android 模拟点击自动化测试

需求在 A 界面,点击跳转到 B 界面(该界面会执行一些业务),再点击返回键出现 Dialog 弹窗,点击确认退出按钮,返回 A 界面。不断循环。思路一开始想到的就是按键精灵,下了 mac 版使用后发...
  • yazhi1992
  • yazhi1992
  • 2017年10月30日 15:36
  • 236

android app系统签名以及adb安装卸载等简单命令使用

ref:http://blog.csdn.net/bulkin/article/details/7601609 项目需要,用到了系统的一些权限。4.2下可以在manifest授权的到了4.4权限获取不...
  • u010093419
  • u010093419
  • 2015年07月27日 17:37
  • 1368
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Adb-for-test简单使用
举报原因:
原因补充:

(最多只允许输入30个字)