目录

自定义UI组件无类型、无id,UI测试该如何操作

问题现象

组件测试,UI测试,自定义UI组件无法通过类型找到,也无id属性,应该怎么操作?

背景知识

UiTest框架从API version 9开始,通过On类提供了丰富的控件特征描述API,用于进行控件筛选来匹配/查找出目标控件。

On提供的API能力具有以下几个特点:

  1. 支持单属性匹配和多属性组合匹配,例如同时指定目标控件text和id。
  2. 控件属性支持多种匹配模式。
  3. 支持控件绝对定位,相对定位,可通过ON.isBefore和ON.isAfter等API限定邻近控件特征进行辅助定位。

On类提供的所有API均为同步接口,建议使用者通过静态构造器ON来链式创建On对象。

UiTest API文档:UI Test。

解决方案

如果不能通过类型或id找到,可以尝试通过text、描述、组件的位置关系等进行定位。

async function test() {
  let driver: Driver = Driver.create();
  let on: On = ON.text('456').isBefore(ON.text('123')); // 查找text为123之前的第一个text为456的组件
  let button: Component = await driver.findComponent(on);
  await button.click()
}