uiautomator的坑和AAPT命令方式启动一个应用程序
最近在使用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命令方式启动一个应用程序相关推荐
- java 启动类_java程序启动,类的加载情况
一.java程序运行的时候,不是所有类必须被加载到jvm虚拟机中才可以正常使用 是不是所有的class文件都在启动的时候全部加载呢? java中的类大致分为三种: 1.系统类 2.扩展类 3.由程序 ...
- Python如何启动windows本地程序
要在Windows上使用Python启动本地程序,您可以使用subprocess模块.具体而言,您可以使用subprocess.call()或subprocess.Popen()函数来启动一个本地程序 ...
- 今天带你体验79毫秒启动一个SpringBoot项目
大家好,我是雷小帅,今天来个项目实战. 先抛一个问题,大家在自己电脑上启动一个 spring boot 项目需要花费多久? 根据项目大小和机器环境,花费几秒到几十秒的人应该都有. 最近 spring ...
- BroadcastReceiver 启动activity(在activity之外启动一个activity)
** * 在BroadcastReceiver中启动Activity的问题 * * 如果在BroadcastReceiver的onReceive()方法中如下启动一个Activity * In ...
- 如何从Android中的另一个应用程序启动活动
我想从我的Android应用程序启动已安装的软件包. 我认为可以使用意图,但是我没有找到一种方法. 有链接,在哪里可以找到信息? #1楼 我知道已经回答了,但是这是我实现类似内容的方法: Intent ...
- 启动一个线程是用run()还是start()?
启动一个线程是调用start()方法,使线程就绪状态,以后可以被调度为运行状态,一个 线程必须关联一些具体的执行代码,run()方法是该线程所关联的执行代码. 转载于:https://www.cnbl ...
- weblogic管理2 - 创建并启动一个managed server
创建一个managed server. 1. 进入网页console管理页面,如:http://10.100.25.14:7001/console , 先点击->服务器 (红色标记框) ...
- 启动服务错误5拒绝访问_【Go API 开发实战 5】基础1:启动一个最简单的 RESTful API 服务器...
启动一个最简单的 RESTful API 服务器 本节核心内容 启动一个最简单的 RESTful API 服务器 设置 HTTP Header API 服务器健康检查和状态查询 编译并测试 API 本 ...
- 怎样学会科学的调研并启动一个项目
文章首发于微信公众号<有三AI> [深度学习图像项目实战-从入门到上线1]怎样学会科学的调研并启动一个项目 00 导读 每一个项目的第一步就是立项,立项需要进行充分的调研才能确定是否值得启 ...
最新文章
- Deep Web爬虫
- mysql server uuids_master and slave have equal MySQL server UUIDs 解决方法
- @PathVariable注解使用
- openjudge基础题3计算书费
- 以下构成python循环结构的方法中_《Python程序设计与案例教程》课件chap5循环结构程序设计.ppt...
- 理解T-SQL: 触发器
- 91年转行前端开发,是不是不该转,有啥风险?
- c语言详解 蔡勒(Zeller)公式计算某一天是星期几 极其方便
- wordpress插件WP Rest API接口文档说明
- bizhubc226说明书_bizhub c226驱动下载-柯尼卡美能达c226驱动下载 v1.0官方版--pc6下载站...
- Endnote IEEE TRANSACTIONS ON INDUSTRIAL ELECTRONICS/TIE/TPEL 参考文献格式模板
- 数学建模overleaf模板_数学建模论文怎么写?快来pick最优万能模板,一文格式全搞定!...
- python设置excel边框_用Python操作Excel电子表格?单元格边框如何设置?样式有哪些?...
- 2021年茶艺师(初级)考试题库及茶艺师(初级)作业考试题库
- The captain题目回顾
- Java对日期时间的一些基本操作
- 使用Perfmon和PAL工具查看Server性能--PerfMon入门指南
- Deepin系统初体验指南:从安装到开发环境配置
- OUC离散数学II实验二(Python+Cpp)
- 英伟达驱动安装(华为makebook13-2018 NVIDIA-GeForce-MX150)
热门文章
- python3 selenium_Python3+Selenium3自动化测试-(准备)
- mysql数据库增删改查关键字_mysql数据库的增删改查
- ebp 函数堆栈esp_函数堆栈调用过程
- python连接不上数据库_pycharm连接mysql数据库连接不上
- 内存不能为read进不去桌面_四级报名进不去怎么办
- java json 易用_Java中 Json的使用
- mysql锁表查询_Mysql数据库锁情况下开启备份导致数据库无法访问处理分享
- 2-修改软件源让pip下载更快
- pat 乙级 1005 继续(3n+1)猜想(C++)
- 如何利用光衰减器测试光纤收发器的灵敏度?