UI Automator

UI Automator 是一个界面测试框架,适用于整个系统上以及多个已安装应用间的跨应用功能界面测试。

UI Automator 测试框架提供了一组 API,用于构建在用户应用和系统应用上执行交互的界面测试。通过 UI Automator API,您可以执行在测试设备中打开“设置”菜单或应用启动器等操作。UI Automator 测试框架非常适合编写黑盒式自动化测试,此类测试的测试代码不依赖于目标应用的内部实现细节。

UI Automator 测试框架的主要功能包括:

  • 用于检查布局层次结构的查看器。如需了解详情,请参阅 UI Automator 查看器
  • 用于检索状态信息并在目标设备上执行操作的 API。如需了解详情,请参阅访问设备状态
  • 支持跨应用界面测试的 API。如需了解详情,请参阅 UI Automator API

UI Automator 查看器

uiautomatorviewer 工具提供了一个方便的 GUI,用于扫描和分析 Android 设备上当前显示的界面组件。您可以使用此工具来检查布局层次结构并查看设备前台显示的界面组件的属性。利用此信息,您可以使用 UI Automator 创建更精细的测试。例如,通过创建与特定可见属性匹配的界面选择器以做到这一点。

uiautomatorviewer 工具位于 <android-sdk>/tools/bin 目录中。

访问设备状态

UI Automator 测试框架提供了一个 UiDevice 类,用于在运行目标应用的设备上访问和执行操作。您可以调用其方法以访问设备属性,如当前屏幕方向或显示屏尺寸。UiDevice 类还可用于执行以下操作:

  • 改变设备的旋转。
  • 按硬件键,如“音量调高按钮”。
  • 按返回、主屏幕或菜单按钮。
  • 打开通知栏。
  • 截取当前窗口的屏幕截图。

例如,如需模拟按下“主屏幕”按钮,请调用 UiDevice.pressHome() 方法。

UI Automator API

通过 UI Automator API,您可以编写可靠的测试,而无需了解目标应用的实现细节。您可以使用这些 API 在多个应用间捕获和操纵界面组件:

  • UiCollection:枚举容器的界面元素,目的是为了计数,或者按可见文本或内容说明属性来定位子元素。
  • UiObject:表示设备上可见的界面元素。
  • UiScrollable:支持搜索可滚动界面容器中的项目。
  • UiSelector:表示对设备上的一个或多个目标界面元素的查询。
  • Configurator:可让您设置用于运行 UI Automator 测试的关键参数。

例如,以下代码展示了如何编写测试脚本以显示设备中的默认应用启动器:

Kotlin

    device = UiDevice.getInstance(getInstrumentation())
    device.pressHome()

    // Bring up the default launcher by searching for a UI component
    // that matches the content description for the launcher button.
    val allAppsButton: UIObject = device.findObject(
            UiSelector().description("Apps"))

    // Perform a click on the button to load the launcher.
    allAppsButton.clickAndWaitForNewWindow()
    

Java

    device = UiDevice.getInstance(getInstrumentation());
    device.pressHome();

    // Bring up the default launcher by searching for a UI component
    // that matches the content description for the launcher button.
    UiObject allAppsButton = device
            .findObject(new UiSelector().description("Apps"));

    // Perform a click on the button to load the launcher.
    allAppsButton.clickAndWaitForNewWindow();
    

如需详细了解如何使用 UI Automator,请参阅 API 参考文档测试多个应用的界面指南。

其他资源

如需详细了解如何在 Android 测试中使用 UI Automator,请参阅以下资源。

示例