Uiautomator Api浅析
来源:互联网 发布:男女互换灵魂的网络剧 编辑:程序博客网 时间:2024/05/01 20:55
最近在处理CTS问题时会遇到一些UiAutoMator相关的API,搜集资料记录。
转至http://blog.sina.com.cn/s/blog_ae2575ff01018b2o.html
从android sdk api 16开始,Android SDK开始支持两个做功能UI测试的新工具。
uiautomatorviewer,一个用以扫描以及分析Android应用程序的UI部件的工具。
以及uiautomator ,一个提供API用以自定义UI测试的Java库。
要应用上面两个工具,除了需要android sdk api 16以上的前提条件外,还要求Android SDKTools为21版以上。
UiAutomator主要涉及一下几个类,大多数位于源码包的com.android.uiautomator.core下,其中粗体字部分为主要会接触到的类,熟知这5个类的作用,就可以大体顺畅的写出UiAutomator的测试用例。
UiAutomatorTestCase
UiDevice
UiSelector
UiScrollable
UiObject
UiCollection
UiTestAutomationBridge,
InteractionController,
UiWatcher
TestCase
每个测试用例都需要继承UiAutomatorTestCase,以实现测试环境的setup,teardown等同能。而UiAutomatorTestCase则是通过继承Junit3中的TestCase类,并在其中的setUp()、tearDown() 、getParams() 函数中。其中主要是用Bundle实现AndroidActivity之间的通讯。在UiAutomatorTestCase,还加入了getUiDevice()等关于UiDevice的函数,以实现在测试的任意地方均可调用UiDevice()。
此类主要包含了获取设备状态信息,和模拟用户至于设备的操作两类api。
可以通过getDisplaySizeDp(),
pressMenu(),
而takeScreenshot() 允许随时对设备截屏。
主要是通过一定查询方式,定位到所要操作的UI元素。
一般UI元素均可通过以下API定位:text(),
值得注意的是index()和
new
另有enabled(),
UiObject可代表页面的任意元素,它的各种属性定位通常通过UiSelector来完成。
比较常用的Api如clickAndWaitForNewWindow
UiObject允许点击该元素的具体一个部分,Api如clickTopLeft(),
通过getText(),
setText(),
waitForExists() 可以用来操纵相关等待或验证。
UiCollection一般与UiSelector连用,如它的构造函数也要求提供Uiselector:UiCollection(UiSelector
它的api较少,主要用以从Uiselector筛选出的元素集中挑出所要的元素:getChildByDescription(),
UiObject -> UiCollection->UiScrollable
UiScrollable
其Api中,setAsVerticalList(),
UiScrollable
appViews.setAsHorizontalList();
UiObject
helperApp
.className(android.widget.TextView.class.getName()),
下面介绍下UI Testing Framework构成的重要类:
这是整个TestingFramework的基础,此类负责连接系统了,记录最新的可链接事件(AccessibilityEvent) ,窗口内容查询Api等。可以被Android
这里需要注意两个概念:
1、AccessibilityEvent:所有的Ui元素可以被操纵,因为这些Event都是AccessibilityEvent。对于怎样令页面元素可以被操纵,使得相关的事件都是AccessibilityEvent,请参见Uiautomator
2、AccessibilityNodeInfo:视窗中的组件树节点,也就是uiautomtorViewer中展示的各个节点。
Api中connect(),
executeCommandAndWaitFor
UiAutomatorBridge是UiTestAutomationBridge的子类,区别主要是在构造函数中加上了InteractionController
介绍InteractionController,需要先提InteractionProvider,它负责注入用户事件(如点击、输入等)
InteractionController则定义了几乎所有至于手机的基础操作,如runAndWaitForEvents(),
QueryController负责把UiSelector
具体Api如下:findNodePatternRecursive
UiWatcher只在UiSelector无法找到匹配的结果时被调用,意在重试、等待页面更新
它的相关函数均在UiDevice中,如:UiDevice.registerWatcher(),UiDevice.
- Uiautomator Api浅析
- Uiautomator Api浅析
- Uiautomator Api浅析
- Uiautomator Api浅析
- Uiautomator Api浅析
- Uiautomator Api浅析
- Uiautomator Api浅析
- Uiautomator Api浅析
- UIAutomator API浅析
- Uiautomator Api浅析
- 关于UIautomator API及浅析
- uiautomator-api
- uiautomator api
- uiautomator API文档
- Uiautomator API简介-摘要
- Android UiAutomator UiObject API
- UiAutomator UiCollection API
- python uiautomator API
- 遇到 ORACLE 错误 1658
- Linux GCC常用命令
- Java中的输入输出流
- 黑马程序员_java程序流程控制学习笔记
- 追逐自己的梦想----------辅助制作第五课:分析并测试物品使用CALL
- Uiautomator Api浅析
- Linux串口(serial、uart)驱动程序设计
- 大牛陆振波资源备忘
- Linux netstat命令详解
- 关于sap sd模块的常用bapi .
- 关于java中的split函数
- 2014半年小总结(转载)
- 使用apache+tomcat 负载均衡 session共享
- java读写txt文件