码迷,mamicode.com
首页 > 其他好文 > 详细

uiatuomator命令启动apk,与查找多个相同控件

时间:2016-03-10 20:16:15      阅读:368      评论:0      收藏:0      [点我收藏+]

标签:

背景:在做项目时,发现使用uiatuomator中遇到了一些问题,现在把解决方法和思路分享出来

案列1:使用命令去启动要运用的apk

在做自动化时,需要通过命令去启动APK的包,我使用的是sdk中自带的AAPT工具

 

使用命令方式启动,可以使用SDK中自带的aapt工具,路径是在E:\Soft\JAVA\adt-bundle-windows-x86_64-20131030\sdk\build-tools\android-4.4,使用时,需要在我的电脑中去配置环境变量,配置百度能解决

 

1..验证aapt是否可用,如下,验证aapt的包名

 

 命令行:aapt dump badging 安装包地址,如果能出现包名而不是报错的提示,则aapt能够使用

技术分享

 

2.Uiautomator中使用aapt的方式启动进程:

 

am start -n com.hzins.mobile / com.hzins.mobile

 

Am start -n 包名/启动的activity

 

如果不知道启动的进程,在aapt中单独使用命令,查看里面的activity,如下图所示

技术分享

 

 

我代码中使用的是:

Runtime.getRuntime().exec("am start -n com.XXX.mobile(packgename)/com.XXXX.mobile.act.ACT_Splash(stactivity) ");

案列2:在登录控件中,登录框和密码框,是相同resouceid,class,并且密码框没有文本标识是哪一个文本框

 

解决办法:可用“insrance”标识定位,相同控件中

 

instance(0)表示第一个,instance(1)表示第二个 

 

不写instance就默认是instance(0) 

 

3.案列:在提交登录时,某些控件的clickables是为flase这样是就不能使用点击如:

 

1.提交订单,有提示未登录

 

2.控件的点击的属性不可用,怎么获取

 

技术分享

 

解决办法:

获取外层可用的控件,注意标识

4.捕获异常监听,如启动时升级提醒和显示框

技术分享

解决:uiwatcher结构应该是这样:
main(){
注册watcher
一个uiselector相关操作
删除watcher
}
还需要注意:swipe(startX, startY, endX, endY, steps)
--在手机上滑动,从(startX,startY)(endX,endY)steps表示滑动的这个距离分为几步完成,数目越少,滑动幅度越大。

  String watcherName = "watcher1";

 getUiDevice().getInstance().registerWatcher(watcherName, new UiWatcher(){//android.widget.ImageView是导航页第一个页面的控件

 UiObject runte=new UiObject(new UiSelector().className("android.widget.ImageView"));

@Override

public boolean checkForCondition() {

// TODO Auto-generated method stub

if(runte.exists())

{

 

int x=getUiDevice().getInstance().getDisplayWidth();

int y=getUiDevice().getInstance().getDisplayHeight();

//getUiDevice().swipe(startX, startY, endX, endY, steps)

 getUiDevice().swipe(600, y/2,x/4,y/2,5);

}

Log.d("tag", "成功了点击");

return true;

 

}

 });

 //去判定首页任意一个控件

UiObject runte=new UiObject(new UiSelector().className("android.widget.ImageView").resourceId("com.hzins.mobile:id/bt_ok"));

runte.clickAndWaitForNewWindow();

// 删除watcher

getUiDevice().removeWatcher(watcherName);

 

uiatuomator命令启动apk,与查找多个相同控件

标签:

原文地址:http://www.cnblogs.com/chongyou/p/5263163.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!