背景:在做项目时,发现使用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,与查找多个相同控件的更多相关文章

  1. appium滚动查找屏幕外的控件

    嗯,还是把自己做的实验保存一下 Appium1.12.1+python2.7 实验滚动,查找屏幕外控件以及控制seekbar scroll() 是根据页面中两个元素位置之间的距离进行滑动. 滑动寻找屏 ...

  2. UWP 查找模板中的控件

    这个标题我也不知道咋起,意思说一下你就明白. 1. 对官方控件的模板进行定制修改,以满足多样化需求,还有漂亮的UI 比如ListView,GridView等. 2. 在设计的情况下并没有这个控件,而在 ...

  3. C# 查找指定名称的控件(转)

    请问我知道控件的名称如何得到这个控件对象呢? var button = this.FindName("button1") as Button; Button button = th ...

  4. Android中查找一个Layout中指定的子控件

    我们通常希望查找一个页面中指定类型的控件,单个控件知道id很容易找到,但是如果是多个呢?或者说是在程序中自定义的控件,且不知道id怎么办呢?如想找到页面中的Spinner,可用以下方法 /** * 从 ...

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

    本文结合模板的应用初步介绍ListView的应用 一.Xaml中如何建立数据资源 大部分数据都会来自于后台代码,如何Xaml同样的建立数据源呢?比如建立一个学生List: 首先引入命名空间: xmln ...

  6. WPF 按名称查找控件

    1FrameworkElement类FindName方法 使用过程 1.容器控件.RegisterName("Name",要注册的控件)   //注册控件 2.容器控件.FindN ...

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

    本文结合模板的应用初步介绍ListView的应用 一.Xaml中如何建立数据资源 大部分数据都会来自于后台代码,如何Xaml同样的建立数据源呢?比如建立一个学生List: 首先引入命名空间: xmln ...

  8. 梦想CAD控件COM接口自定义命令

    在CAD软件操作中,为方便使用者,使用自定义命令发出命令,完成CAD绘图,修改,保存等操作.点击此处下载演示实例. _DMxDrawX::RegistUserCustomCommand 向CAD控件注 ...

  9. 梦想CAD控件网页版关于自定义命令

    在CAD控件操作中,为方便使用者,使用自定义命令发出命令,完成CAD绘图,修改,保存等操作.点击此处在线演示. _DMxDrawX::RegistUserCustomCommand 向CAD控件注册一 ...

随机推荐

  1. MVC框架模式技术实例(用到隐藏帧、json、仿Ajax、Dom4j、jstl、el等)

    前言: 刚刚学完了MVC,根据自己的感悟和理解写了一个小项目. 完全按照MVC模式,后面有一个MVC的理解示意图. 用MVC模式重新完成了联系人的管理系统: 用户需求: 多用户系统,提供用户注册.登录 ...

  2. Magento 切换成中文后没有数据信息解决办法

    进入后台的, 选择CMS---pages, 看到这个么? 如果这里显示的不是所有商店界面的话, 就点击进去,然后选择所有商店界面: 如下所示: 再点击保存就可以了.

  3. php 实现文件下载,兼容IE、Firefox、Chrome等浏览器

    一.下载任意文件: Header ( "Content-type: application/octet-stream" ); $ua = $_SERVER ["HTTP_ ...

  4. 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. (可选)删 ...

  5. Spring Quartz结合Spring mail定期发送邮件

    文件配置例如以下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="htt ...

  6. linux netlink套接字学习资料

    理论: http://blog.csdn.net/unbutun/article/details/3394061 进一步深入: http://edsionte.com/techblog/archive ...

  7. RapidXml用法

    一.写xml 文件 #include <iostream> #include "rapidxml/rapidxml.hpp" #include "rapidx ...

  8. android学习日记0--开发需要掌握的技能

    一.开发android,我们需要哪些技能基础 1.Java基础知识 2.Linux基础知识 3.数据库基础知识 4.网络协议 5.Android基础知识 6.服务器端开发知识 1.Java基础知识 很 ...

  9. 会话跟踪session cookie

    会话跟踪 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在 ...

  10. vmware mac虚拟机 停在启动界面

    前言: 关于vmware安装mac 10.8 可以从参看:http://www.cnblogs.com/zyf2013/p/3888242.html 安装完成以后重新启动,卡在了白苹果启动画面处. 或 ...