最近在使用UIautomator完成公司的一个主流程的自动化,因为不适用H5和IOS所以会放弃这个工具的使用,现在记录在使用uiautomator的一些问题:

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

使用命令方式启动,可以使用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.xxxxx.mobile(packgename)/com.hxx.xxx.act.ACT_Splash(stactivity) ");

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

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

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

不写instance就默认是instance(0)

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

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

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

解决办法:获取外层可用的控件,注意标识

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

解决: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/5125499.html

uiautomator的坑和AAPT命令方式启动一个应用程序相关推荐

  1. java 启动类_java程序启动,类的加载情况

    一.java程序运行的时候,不是所有类必须被加载到jvm虚拟机中才可以正常使用 是不是所有的class文件都在启动的时候全部加载呢? java中的类大致分为三种:  1.系统类 2.扩展类 3.由程序 ...

  2. Python如何启动windows本地程序

    要在Windows上使用Python启动本地程序,您可以使用subprocess模块.具体而言,您可以使用subprocess.call()或subprocess.Popen()函数来启动一个本地程序 ...

  3. 今天带你体验79毫秒启动一个SpringBoot项目

    大家好,我是雷小帅,今天来个项目实战. 先抛一个问题,大家在自己电脑上启动一个 spring boot 项目需要花费多久? 根据项目大小和机器环境,花费几秒到几十秒的人应该都有. 最近 spring ...

  4. BroadcastReceiver 启动activity(在activity之外启动一个activity)

    **  * 在BroadcastReceiver中启动Activity的问题  *  * 如果在BroadcastReceiver的onReceive()方法中如下启动一个Activity  * In ...

  5. 如何从Android中的另一个应用程序启动活动

    我想从我的Android应用程序启动已安装的软件包. 我认为可以使用意图,但是我没有找到一种方法. 有链接,在哪里可以找到信息? #1楼 我知道已经回答了,但是这是我实现类似内容的方法: Intent ...

  6. 启动一个线程是用run()还是start()?

    启动一个线程是调用start()方法,使线程就绪状态,以后可以被调度为运行状态,一个 线程必须关联一些具体的执行代码,run()方法是该线程所关联的执行代码. 转载于:https://www.cnbl ...

  7. weblogic管理2 - 创建并启动一个managed server

    创建一个managed server. 1.  进入网页console管理页面,如:http://10.100.25.14:7001/console     , 先点击->服务器 (红色标记框) ...

  8. 启动服务错误5拒绝访问_【Go API 开发实战 5】基础1:启动一个最简单的 RESTful API 服务器...

    启动一个最简单的 RESTful API 服务器 本节核心内容 启动一个最简单的 RESTful API 服务器 设置 HTTP Header API 服务器健康检查和状态查询 编译并测试 API 本 ...

  9. 怎样学会科学的调研并启动一个项目

    文章首发于微信公众号<有三AI> [深度学习图像项目实战-从入门到上线1]怎样学会科学的调研并启动一个项目 00 导读 每一个项目的第一步就是立项,立项需要进行充分的调研才能确定是否值得启 ...

最新文章

  1. Deep Web爬虫
  2. mysql server uuids_master and slave have equal MySQL server UUIDs 解决方法
  3. @PathVariable注解使用
  4. openjudge基础题3计算书费
  5. 以下构成python循环结构的方法中_《Python程序设计与案例教程》课件chap5循环结构程序设计.ppt...
  6. 理解T-SQL: 触发器
  7. 91年转行前端开发,是不是不该转,有啥风险?
  8. c语言详解  蔡勒(Zeller)公式计算某一天是星期几  极其方便
  9. wordpress插件WP Rest API接口文档说明
  10. bizhubc226说明书_bizhub c226驱动下载-柯尼卡美能达c226驱动下载 v1.0官方版--pc6下载站...
  11. Endnote IEEE TRANSACTIONS ON INDUSTRIAL ELECTRONICS/TIE/TPEL 参考文献格式模板
  12. 数学建模overleaf模板_数学建模论文怎么写?快来pick最优万能模板,一文格式全搞定!...
  13. python设置excel边框_用Python操作Excel电子表格?单元格边框如何设置?样式有哪些?...
  14. 2021年茶艺师(初级)考试题库及茶艺师(初级)作业考试题库
  15. The captain题目回顾
  16. Java对日期时间的一些基本操作
  17. 使用Perfmon和PAL工具查看Server性能--PerfMon入门指南
  18. Deepin系统初体验指南:从安装到开发环境配置
  19. OUC离散数学II实验二(Python+Cpp)
  20. 英伟达驱动安装(华为makebook13-2018 NVIDIA-GeForce-MX150)

热门文章

  1. python3 selenium_Python3+Selenium3自动化测试-(准备)
  2. mysql数据库增删改查关键字_mysql数据库的增删改查
  3. ebp 函数堆栈esp_函数堆栈调用过程
  4. python连接不上数据库_pycharm连接mysql数据库连接不上
  5. 内存不能为read进不去桌面_四级报名进不去怎么办
  6. java json 易用_Java中 Json的使用
  7. mysql锁表查询_Mysql数据库锁情况下开启备份导致数据库无法访问处理分享
  8. 2-修改软件源让pip下载更快
  9. pat 乙级 1005 继续(3n+1)猜想(C++)
  10. 如何利用光衰减器测试光纤收发器的灵敏度?