ATK的识别属性
在 Linux 应用中,CukeTest 通过一系列识别属性来定位和操作界面元素。这些属性帮助自动化工具准确识别控件,从而实现自动化测试任务。
如需更多了解模型对象及其属性,请查阅模型对象及属性文档。
常用识别属性
以下是 Linux 应用中常用的识别属性。这些属性在其他自动化技术(如 Windows 自动化)中也存在,但在 Linux 应用中可能有不同的含义。
type
- 描述控件的类型,是一个必需的属性,不能更改或删除。
- 控件类型决定了控件提供的操作 API。
- 常见类型包括 Button、Label、Window、List、Table、Tree 等。
name
- 对应 ATK 控件的可访问名称。
- 是控件的内部对象名称。
text
- 控件显示的文本内容。
- 如果控件在开发时设置了
text
、label
、title
等属性,这些属性通常与用户看到的内容一致,因此会首先选择这些值进行识别。 - 如果控件没有设置这些属性,则认为该属性不存在。
className
- 控件所属的类名称,源自控件在代码中的类定义。
className
反映了控件在开发时采用的具体组件,有助于了解应用的结构。- 例如,对于一个按钮控件,
type
可能是 Button,而className
可能是ToggleButton
,如下图所示:
辅助识别属性
index
- 描述目标控件在一次匹配到的多个控件中的位置。
- 当识别属性不足以唯一标识控件时,
index
可以作为辅助解决方案。 - 具体可参考Windows的识别属性。
objectType
- 描述目标控件的抽象类型。
objectType
设计用于更精确地控制和操作控件。- 具体可参考Windows的识别属性。
特有识别属性
特有识别属性是指那些仅出现在特定类型控件中的属性,这些属性可以帮助我们更准确地定位和操作这些特定的控件。
itemPath
目标控件在整个视图组件中所处的位置,存在于ListItem
、TableItem
、TreeItem
和ViewItem
中,但对于不同类型的item
中路径的定义也有些许区别。在类型文件中的定义如下:
JavaScript
Python
export type ItemPath = number; // 常见于ListItem,用数字表示列表项位置。
export type ItemPath = number[]; // 常见于TreeItem,用数字数组表示树节点的路径
export type ItemPath = string[]; // 常见于TreeItem,用字符串数组表示树节点的名称路径,会自动地在树中寻找符合的树节点
export type ItemPath = [number, number]; // 常见于TableItem中,一个长度为2的数组数组,数组中的两个数字分别代表行和列,通过行列来表示单元格位置。
export type ItemPath = (number | string | [number, number])[]; // 常见于TreeItem,用更复杂数组表示树节点的某列属性,数组的最后一个值为类似行列的数组。如果ItemPath写作 [0, [0, 0]],则代表树的第1个节点的第1个子节点的第1列属性。
ItemPath: int # 常见于ListItem,用数字表示列表项位置。
ItemPath: List[int] # 常见于TreeItem,用数字数组表示树节点的路径
ItemPath: List[str] # 常见于TreeItem,用字符串数组表示树节点的名称路径,会自动地在树中寻找符合的树节点
ItemPath: [int, int] # 常见于TableItem中,一个长度为2的数组数组.
# 数组中的两个数字分别代表行和列,通过行列来表示单元格位置。
ItemPath: List[Union(str, int, ItemPath)] # 常见于TreeItem,用更复杂数组表示树节点的某列属性,数组的最后一个值为类似行列的数组。
# 如果ItemPath写作 [0, [0, 0]],则代表树的第1个节点的第1个子节点的第1列属性。
可以将ItemPath
作为一种通用的描述数据视图中项(Item
)的位置的格式,只是在不同类型的视图中有不同形式的简写。由于可以将表格(Table)类比为单层级的树(Tree),也可以将列表(List)类比为单列的表格(Table),因此其实所有ItemPath都可以写成相同的形式(只是更复杂更不易读)。
- 列表(List):
[1]
可以写作[[1,0]]
。 - 表格(Table):
[1, 1]
可以写作[[1, 1]]
。 - 树(Tree):
[1, 1]
可以写作[1, [1, 0]]
。
可以发现,无论哪一种数据视图的ItemPath
都可以写成相同的、完整的二维数组的格式。