uiautomator的入门
前言
大三暑假找了份实习,工作了2个星期,写点东西,这也是我第一次写博客。进去第一天熟悉了git,然后带我的人给了我一个项目,里面都是 uiaotomator 的脚本,主要用来自动化操作手机微信。通过脚本可以自动化使手机按照你的意愿去操作微信,如自动给朋友发微信消息等。第一天就是自己看下脚本,各种脚本测试一下,点一下。
第二天开始就是对应的微信版本的升级,做相应的脚本的升级。因为微信版本变了,控件对应的 resourceId 也会变。所以他先让我对着旧版本的微信,把相应的 resourceId 给改变一下。
之后改完之后就开始写新的脚本,如微信的自动群发等。进而从第一次听说这个 uiautomator 到可以写一些脚本了。
了解
什么是 uiaotomator?
UI Automator是一个UI测试框架,适用于跨系统和已安装应用程序的跨应用程序功能UI测试。UI Automator测试框架提供了一组API来构建用于在用户应用程序和系统应用程序上执行交互的UI测试。
- 目前使用到的 uiaotomator API
UiObject :表示在设备上可见的UI元素。
- 里面的经常用到的有:
UiObject 的常用方法 | 作用 |
---|---|
.click( ) | 顾名思义,就是点击一次本ui元素 |
. clickAndWaitForNewWindow( ) | 该方法的不同之处click()仅在于该方法由于点击而等待新的窗口转换。 |
.exists( ) | 检查视图是否存在 |
.getChild(UiSelector selector) | 为当前UiObject下的子视图创建新的UiObject。 |
.getClassName( ) | 检索classNameUI元素的属性 |
.getText( ) | 读取textUI元素的属性 |
. isChecked( ) | 检查UI元素的checked属性当前是否为true |
.setText(String text) | 清除字段内容后,在可编辑字段中设置文本 |
UiScrollable :为在可滚动UI容器中搜索项目提供支持。
UiScrollable的常用方法 | 作用 |
---|---|
.getChildByDescription(UiSelector childPattern, String text) | 在当前可滚动页面中按 desc 内容搜索子元素。 |
. clickAndWaitForNewWindow( ) | 该方法的不同之处 click( ) 仅在于该方法由于点击而等待新的窗口转换。 |
.getChildByText(UiSelector childPattern, String text) | 在当前可滚动容器中按 text 内容搜索子元素。 |
.scrollBackward(int steps) | 执行向后滚动,划step页。 |
.scrollToBeginning(int maxSwipes) | 滚动到可滚动布局元素的开头。 |
.scrollToEnd(int maxSwipes) | 滚动到可滚动布局元素的末尾。 |
UiSelector :表示设备上一个或多个目标UI元素的查询。
UiSelector的常用方法 | 作用 |
---|---|
. checked(boolean val) | 设置搜索条件:匹配当前选中的小部件(通常用于复选框)。 |
. className(String className) | 设置搜索条件:匹配窗口部件的类属性(例如,“android.widget.Button”) |
. description(String desc) | 设置搜索的条件:匹配窗口部件的description属性。 |
.index(int index) | 设置搜索条件:窗口小部件与布局层次结构中的节点索引。 |
.resourceId(String id) | 设置搜索条件:给定的资源ID。 (真-常用) |
. scrollable(boolean val) | 设置搜索条件:可滚动的小部件。 |
.text(String text) | 设置搜索条件:窗口小部件中显示的可见文本。 (真-常用) |
实战
看了以上的api,可以基本的写出一些简单的脚本了,下面我会以我写的微信中群发助手的脚本进行为例进行讲解。