Ant*_*hik 5 android android-source android-uiautomator
在文档中它说的是UiAutomation
用于通过模拟用户操作和自省屏幕内容与设备的 UI 进行交互的类。它依赖于平台辅助功能 API 来检查屏幕并在远程视图树上执行一些操作。它还允许注入任意原始输入事件,模拟用户与键盘和触摸设备的交互。人们可以将 UiAutomation 视为一种特殊类型的 AccessibilityService,它不提供服务生命周期的挂钩,并公开对 UI 测试自动化有用的其他 API。
此类公开的 API 是低级的,以便在开发 UI 测试自动化工具和库时最大限度地提高灵活性。一般来说,UiAutomation 客户端应该使用更高级别的库或实现高级功能。例如,在屏幕上执行点击需要构建和注入触摸向下和向上事件,这些事件必须通过调用injectInputEvent(android.view.InputEvent, boolean)传递到系统。
此类公开的 API 可以跨应用程序运行,使客户端能够编写涵盖跨多个应用程序的用例的测试。例如,转到设置应用程序以更改设置,然后与行为取决于该设置的另一个应用程序进行交互。
UiAutomation与常规的到底有什么不同,因为它在源代码AccessibilityService中没有继承它。
public final class UiAutomation {
private static final String LOG_TAG = UiAutomation.class.getSimpleName();
// omitted the rest...
Run Code Online (Sandbox Code Playgroud)
无障碍服务:
只能用于帮助残障用户使用 Android 设备和应用程序。它们在后台运行并接收 [...] AccessibilityEvents [...]。此类事件表示用户界面中的某些状态转换,例如,焦点已更改、按钮已被单击等。此类服务可以选择性地请求查询活动窗口的内容的能力。
这是一个功能强大的工具,基本上可以让您访问手机上发生的所有事情,因此用户需要在手机设置中明确启用此类服务(通常在“辅助功能/已安装服务”下)。
用户界面自动化:
好吧,您基本上引用了问题中的描述,但这里有更详细的描述:
在某种程度上,UiAutomation 充当装饰的 AccessibilityService(装饰器设计模式)。您可以通过阅读方法 getServiceInfo 和 setServiceInfo 的源代码来验证它,这些方法在内部使用连接的服务对应项(检查导入以快速查看)。
这是一个添加了一些功能的包装器,例如,它允许您导航视图层次结构等,而无需每次首次运行仪器测试时在手机设置中启用辅助功能服务。这是借助 android.app.Instumentation 类和其他测试框架组件来实现的。系统可以安全地授予所需的权限,因为检测只能通过 adb 或从系统应用程序中启动。
这并不是真正的 AccessibilityService(甚至不是真正的服务),但为了简单起见并引起人们对底层环境的注意,可能会这样称呼。
| 归档时间: |
|
| 查看次数: |
1211 次 |
| 最近记录: |