问题现象
组件测试,UI测试,自定义UI组件无法通过类型找到,也无id属性,应该怎么操作?
背景知识
UiTest框架从API version 9开始,通过On类提供了丰富的控件特征描述API,用于进行控件筛选来匹配/查找出目标控件。
On提供的API能力具有以下几个特点:
- 支持单属性匹配和多属性组合匹配,例如同时指定目标控件text和id。
- 控件属性支持多种匹配模式。
- 支持控件绝对定位,相对定位,可通过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()
}