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);

时间: 2024-11-03 01:25:18

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

android是怎么根据id查找到控件的

============问题描述============ 求助.... 我有两个xml布局文件,a,b,    两个布局文件中的控件是一样的,id也是一样的.这样eclipse生成的R文件中id也是自由一个的,那么是android怎么根据这个id去查找到指定的控件,而不是查找到另一个???? ============解决方案1============ 引用 3 楼 u013818990 的回复: Quote: 引用 2 楼 kifile 的回复: 首先,你在调用 findViewById 之前,

初步探讨WPF的ListView控件(涉及模板、查找子控件)

本文结合模板的应用初步介绍ListView的应用 一.Xaml中如何建立数据资源 大部分数据都会来自于后台代码,如何Xaml同样的建立数据源呢?比如建立一个学生List: 首先引入命名空间: xmlns:c="clr-namespace:System.Collections;assembly=mscorlib" 然后代码如下:   <c:ArrayList x:Key="stuList">            <local:Student Id=

adb命令查看apk信息, adb启动你的apk

1.用adb获得手机里面某个apk的应用信息.版本信息 adb shell dumpsys package com.sy.a268 2.列出所有 adb shell dumpsys 3.用adb启动apk adb shell am start -n com.sy.a268/com.sy.a268.MainActivity 4.随机产生事件给某个应用程序, 随机产生500个事件给程序.你会发现你的程序不断的被点击,旋转! adb  shell  monkey -p  com.sy.a268  -v

记一次mysql启动不了查找经历

在linux上用的是xampp,mysql启动没有报任何错误,但就是查找不到进程,于是找mysql错误日志,日志在哪?在lampp/var/mysql 以.err结尾的文件里.里面内容如下; /opt/lampp/sbin/mysqld: Can't create/write to file '/tmp/ibvSSzKE' (Errcode: 13 - Permission denied)2015-10-16 12:08:01 b720b700 InnoDB: Error: unable to

Linux常用命令二之文件查找命令

本文对Linux常用命令做一个总结,方便日后查阅. (1) which命令 我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下 面的一些命令来搜索: ? ? ? ?which??查看可执行文件的位置 ? ? ? ?whereis?查看文件的位置 ? ? ? ?locate???配合数据库查看文件位置 ? ? ? ?find???实际搜寻硬盘查询文件名称 which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一 个搜索结果.也就是说,使用which命

Oracle 监听lsnrctl命令启动报错(TNS-12537,TNS-12560,TNS-00507)

LINUX登录oracle用户,通过lsnrctl start命令启动数据库时,报错如下: " [[email protected] ~]$ lsnrctl start LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 29-APR-2015 07:38:11 Copyright (c) 1991, 2009, Oracle. All rights reserved. Starting /home/oracle/app/oracle/pr

用uboot 烧写uboot linux内核 文件系统到nandflash的 过程以及bootm go命令启动与区别

原文:http://blog.sina.com.cn/s/blog_6b94d5680100nd48.html 文章结构结构顺序有变化-1:烧写uboot0: bootargs bootcmd 命令参数的设置1:制作yaffs2的过程2:烧写yaffs2的过程3:制作uimage 的过程4: 烧写uiamge的过程5:uimage zimage vmlinux 的区别6: uboot传递给内核的参数结构 tag7:bootm go 的 启动过程 以及区别8:加载地址 入口地址 等 ///////

adb命令安装apk 来学习吧

1.将需要安装的apk放在platform-tools下 2.将手机和电脑连接,在cmd中输入 adb devices查看 3.使用adb命令安装apk,在cmd中输入:adb install apk的绝对路径 注意:路径中最好不要有中文字符 4.卸载apk 命令卸载

批处理命令启动和关闭tomcat

批处理命令启动和关闭tomcat,其实只要把tomcat自己的脚本呼叫起来就好了呢 关闭tomcat if exist "C:\Tomcat-7.0.39\bin\shutdown.bat" call "C:\Tomcat-7.0.39\bin\shutdown.bat" 启动tomcat if exist "C:\Tomcat-7.0.39\bin\startup.bat" call "C:\Tomcat-7.0.39\bin\sta