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

背景:在做项目时,发现使用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);

 

转载于:https://www.cnblogs.com/chongyou/p/5263163.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值