UIAutomator简介

简介

Android 4.3发布的时候包含了一种新的测试工具–uiautomator,uiautomator是用来做UI测试的。也就是普通的手工测试,点击每个控件元素 看看输出的结果是否符合预期。比如 登陆界面 分别输入正确和错误的用户名密码然后点击登陆按钮看看是否能否登陆以及是否有错误提示等。

官方介绍如下:

UI Automator is a UI testing framework suitable for cross-app functional UI testing across system and installed apps.
Note: This framework requires Android 4.3 (API level 18) or higher.

UI Automator是一个UI测试框架,适用于跨系统和已安装应用程序的跨应用程序功能性UI测试。 注意:它需要Android 4.3 (API level 18)以上版本

UI Automator官方文档 (有墙需要自备梯子。。)

 

 

相关工具

Android SDK在4.3中提供了如下工具来支持UI自动化测试:

  • uiautomatorviewer – 一个图形界面工具来扫描和分析应用的UI控件。存放在tools目录
  • uiautomator – 一个测试的Java库,包含了创建UI测试的各种API和执行自动化测试的引擎。

要使用该工具,需要满足如下条件:

  • Android SDK Tools, Revision 21 or higher
  • Android SDK Platform, API 18 or higher

使用方法

  1. 开启真机(或模拟器)的USB调式模式后连接电脑
  2. 打开设备上的App界面
  3. 启动UI Automatorviewer
  4. 获取对应页面的元素(多设备连接时要选择需要获取元素的设备)

注意事项

报错1

Error while parsing UI hierarchy XML file: Invalid ui automator hierarchy file.

一般Andriod 4.X系统会容易出现,换5.X及以上的系统OK

报错2

java.lang.ArrayIndexOutOfBoundsException

【解答】一般是设备息屏,导致页面没有元素显示,获取时数组地址越界报错,激活设备重启UI Auto即可

  • 演示获取真机模拟器的界面
  • 获取报错的笔记

报错3

Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException: Remote object doesn't exist!

 

 

这个错的原因是因为没有dump下来界面的信息保存到uidump.xml文件中,而该文件保存在/data/local/tmp下,如果没生成该文件,uiautomatorviewer就会报这个错。

解决方案为:重启设备或者重新连接

参考资料:

https://testerhome.com/topics/1988 http://blog.chengyunfeng.com/?p=504

 

转载于:https://www.cnblogs.com/gongxr/p/10650087.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零开始实现ASP.NET Core MVC的插件式开发(五) - 插件的删除和升级

标题:从零开始实现ASP.NET Core MVC的插件式开发(五) - 使用AssemblyLoadContext实现插件的升级和删除 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/11395828.html 源代码:https://github.com/lamondlu/Mystique 前景回…

JDBC Druid式link

准备工作:导入包------druid-1.0.9.jar src文件夹下放下druid.properties文件 且其中的url和数据库名要配置完备 import JdbcUtils.JDBCUtils;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.PseudoColumnUsage;import java.sql…

vs strcore.cpp(156) 内存泄漏

在一个静态函数的线程回调中,一个cstring的对象没释放。 遇到这种问题: 1、查看所有的指针对象,有没有合适的回收 2、查看代码的malloc,看看有没有free 3、一点一点注释代码,定位位置 转载于:https://www.cnblogs.com/…

js(Dom+Bom)第六天(1)

webAPI 01-键盘事件 知识点-onkeydown事件[掌握] onkeydown: 当键盘上的键被按下时候触发的一个事件知识点-onkeyup事件[掌握] onkeyup: 键盘上键弹起时候触发的一个事件知识点-onkeypress事件[了解] onkeypress: 当键盘上的键被按下时候触发的事件onkeydown 和 onkeypress的区…

【JavaWeb】石家庄地铁搭乘系统——第一版(功能尚未完善)

小组成员:高达,程超然 项目目的:能算出地铁搭乘的最优路线并显示在地图上 个人任务:调用队友写好的java代码,将结果显示在网页上 新的知识:百度地图API,使用JQuery的AJAX异步提交 进度&#xff…

扫描枪连接zebra打印机打印条码标签无需电脑

在一些流水线生产的现场,需要及时打印条码标签,由于现场环境和空间限制,无法摆放电脑或者通过连接电脑来打印条码标签的速度太慢, 瑞科条码特提供了一套扫描枪直接连接条码打印机,扫描枪扫描条码之后直接打印输出条码标…

简单的动画函数封装(1)

//创建简单的动画函数封装效果(目标对象&#xff0c;目标位置) function animate(obj,target){var id setInterval(function(){if(obj.offsetLeft > target){clearInterval(id);}else{obj.style.left obj.offsetLeft 5 px;}},30) }可以实现如下效果&#xff1a; <div…

NodeMCU学习(三) : 进入网络世界

阅读原文可以访问我的个人博客 把NodeMCU连接到路由器网络上 NodeMCU可以被配置为Station模式和softAP模式或者Station AP模式&#xff0c;当它被配置为Station模式时&#xff0c;就可以去连接Access Point&#xff08;如路由器&#xff09;。当它被配置为Soft Access Point模…

操作系统原理之进程调度与死锁(三)

一、进程调度的功能与时机 进程调度&#xff1a;进程调度的功能由操作系统的进程调度程序完成 具体任务&#xff1a;按照某种策略和算法从就绪态进程中为当前空闲的CPU选择在其上运行的新进程。 进程调度的时机&#xff1a;进程正常或异常结束、进程阻塞、有更高优先级进程到来…

模拟京东侧边栏

思路&#xff1a; // 1. 获取元素 // 1.1 获取一组li // 1.2 获取一组类名为item的div // 1.3 获取类名为slide的div// 2. 循环遍历给每一个li注册onmouseenter&#xff0c;并且每一个li添加一个index表示索引 // 2.1 循环遍历把所有的li的类名设置为,把所有的item的display设…

ViewPager + TabLayout + Fragment + MediaPlayer的使用

效果图 在gradle里导包 implementation com.android.support:design:28.0.0 activity_main <?xml version"1.0" encoding"utf-8"?><LinearLayout xmlns:android"http://schemas.android.com/apk/res/android" xmlns:tools"http…

vs code打开文件显示的中文乱码

这种情况下&#xff0c;一般是编码格式导致的&#xff0c;操作办法&#xff1a; 鼠标点击之后&#xff0c;上面会弹出这个界面&#xff0c;双击选中 然后从UTF-8换到GB2312&#xff0c;或者自己根据情况&#xff0c;更改编码格式 转载于:https://www.cnblogs.com/132818Creator…

操作系统原理之内存管理(第四章第一部分)

内存管理的⽬标&#xff1a;实现内存分配和回收&#xff0c;提高内存空间的利用率和内存的访问速度 一、存储器的层次结构 寄存器&#xff1a;在CPU内部有一组CPU寄存器&#xff0c;寄存器是cpu直接访问和处理的数据&#xff0c;是一个临时放数据的空间。 高速缓冲区&#xff1…

自写图片遮罩层放大功能jquery插件源代码,photobox.js 1.0版,不兼容IE6

版权声明&#xff1a;本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/u010480479/article/details/27362147 阿嚏~~~ 话说本屌丝没啥开发插件的经验&#xff0c;可是天公不作美&#xff0c;公司须要让我自己开发个图片放大的插件 但公司老大的话&#xff0…

黑白两客进入页面(1)

<div><span>欢</span><span>迎</span><span>来</span><span>到</span><span><strong>黑白两客</strong></span><span>的</span><span>博</span><span>客</sp…

zookeeper学习之原理

一、zookeeper 是什么 Zookeeper是一个分布式协调服务&#xff0c;可用于服务发现&#xff0c;分布式锁&#xff0c;分布式领导选举&#xff0c;配置管理等。这一切的基础&#xff0c;都是Zookeeper提供了一个类似于Linux文件系统的树形结构&#xff08;可认为是轻量级的内存文…

mysql锁表查询和解锁操作

解除正在死锁的状态有两种方法&#xff1a; 第一种&#xff1a; 1.查询是否锁表 show OPEN TABLES where In_use > 0; 2.查询进程&#xff08;如果您有SUPER权限&#xff0c;您可以看到所有线程。否则&#xff0c;您只能看到您自己的线程&#xff09; show processlist 3.杀…

前端js基础智能机器人

<script>var flag true;while(flag) {//获取用户输入信息 var code prompt(你好,我是小娜\n请输入编号或者关键词选择功能,输入Q(q)退出聊天\n1.计算\n2.时间\n3.笑话);switch( code ) {case q:case Q:alert(狠心的抛弃了小娜);flag false;break;case 1:case 计算:var…

2018-2019-2 《Java程序设计》第6周学习总结

20175319 2018-2019-2 《Java程序设计》第6周学习总结 教材学习内容总结 本周学习《Java程序设计》第七章和第十章&#xff1a; 内部类&#xff1a; 1.内部类可以使用外嵌类的成员变量和方法。 2.类体中不可以声明类变量和类方法。 3.内部类仅供外嵌类使用。 4.类声明可以使用s…

Hbase基本原理

一、hbase是什么 HBase 是一种类似于数据库的存储层&#xff0c;也就是说 HBase 适用于结构化的存储。并且 HBase 是一种列式的分布式数据库&#xff0c;是由当年的 Google 公布的 BigTable 的论文而生。HBase 底层依旧依赖 HDFS 来作为其物理存储。 二、hbase的列式存储结构 行…