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);
uiatuomator命令启动apk,与查找多个相同控件的更多相关文章
- appium滚动查找屏幕外的控件
嗯,还是把自己做的实验保存一下 Appium1.12.1+python2.7 实验滚动,查找屏幕外控件以及控制seekbar scroll() 是根据页面中两个元素位置之间的距离进行滑动. 滑动寻找屏 ...
- UWP 查找模板中的控件
这个标题我也不知道咋起,意思说一下你就明白. 1. 对官方控件的模板进行定制修改,以满足多样化需求,还有漂亮的UI 比如ListView,GridView等. 2. 在设计的情况下并没有这个控件,而在 ...
- C# 查找指定名称的控件(转)
请问我知道控件的名称如何得到这个控件对象呢? var button = this.FindName("button1") as Button; Button button = th ...
- Android中查找一个Layout中指定的子控件
我们通常希望查找一个页面中指定类型的控件,单个控件知道id很容易找到,但是如果是多个呢?或者说是在程序中自定义的控件,且不知道id怎么办呢?如想找到页面中的Spinner,可用以下方法 /** * 从 ...
- 初步探讨WPF的ListView控件(涉及模板、查找子控件)
本文结合模板的应用初步介绍ListView的应用 一.Xaml中如何建立数据资源 大部分数据都会来自于后台代码,如何Xaml同样的建立数据源呢?比如建立一个学生List: 首先引入命名空间: xmln ...
- WPF 按名称查找控件
1FrameworkElement类FindName方法 使用过程 1.容器控件.RegisterName("Name",要注册的控件) //注册控件 2.容器控件.FindN ...
- 初步探讨WPF的ListView控件(涉及模板、查找子控件) - GavinJun
本文结合模板的应用初步介绍ListView的应用 一.Xaml中如何建立数据资源 大部分数据都会来自于后台代码,如何Xaml同样的建立数据源呢?比如建立一个学生List: 首先引入命名空间: xmln ...
- 梦想CAD控件COM接口自定义命令
在CAD软件操作中,为方便使用者,使用自定义命令发出命令,完成CAD绘图,修改,保存等操作.点击此处下载演示实例. _DMxDrawX::RegistUserCustomCommand 向CAD控件注 ...
- 梦想CAD控件网页版关于自定义命令
在CAD控件操作中,为方便使用者,使用自定义命令发出命令,完成CAD绘图,修改,保存等操作.点击此处在线演示. _DMxDrawX::RegistUserCustomCommand 向CAD控件注册一 ...
随机推荐
- MVC框架模式技术实例(用到隐藏帧、json、仿Ajax、Dom4j、jstl、el等)
前言: 刚刚学完了MVC,根据自己的感悟和理解写了一个小项目. 完全按照MVC模式,后面有一个MVC的理解示意图. 用MVC模式重新完成了联系人的管理系统: 用户需求: 多用户系统,提供用户注册.登录 ...
- Magento 切换成中文后没有数据信息解决办法
进入后台的, 选择CMS---pages, 看到这个么? 如果这里显示的不是所有商店界面的话, 就点击进去,然后选择所有商店界面: 如下所示: 再点击保存就可以了.
- php 实现文件下载,兼容IE、Firefox、Chrome等浏览器
一.下载任意文件: Header ( "Content-type: application/octet-stream" ); $ua = $_SERVER ["HTTP_ ...
- Linux更改默认jdk
RHEL默认安装Open JDK--java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64,现在要换成Oracle JDK1.7.0_51 1. (可选)删 ...
- Spring Quartz结合Spring mail定期发送邮件
文件配置例如以下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="htt ...
- linux netlink套接字学习资料
理论: http://blog.csdn.net/unbutun/article/details/3394061 进一步深入: http://edsionte.com/techblog/archive ...
- RapidXml用法
一.写xml 文件 #include <iostream> #include "rapidxml/rapidxml.hpp" #include "rapidx ...
- android学习日记0--开发需要掌握的技能
一.开发android,我们需要哪些技能基础 1.Java基础知识 2.Linux基础知识 3.数据库基础知识 4.网络协议 5.Android基础知识 6.服务器端开发知识 1.Java基础知识 很 ...
- 会话跟踪session cookie
会话跟踪 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在 ...
- vmware mac虚拟机 停在启动界面
前言: 关于vmware安装mac 10.8 可以从参看:http://www.cnblogs.com/zyf2013/p/3888242.html 安装完成以后重新启动,卡在了白苹果启动画面处. 或 ...