树(Tree)
本章节介绍针对树控件(Tree
)及其节点(TreeItem
)的控件方法。表格列出了每个API的链接及简要描述,以便快速查找相关内容。
针对树控件以及树中的节点,CukeTest提供了Tree
和TreeItem
两个控件。Tree
控件代表整棵树,而TreeItem
代表树中的各个节点。
树状视图控件: Tree
Tree
控件代表整棵树,主要通过传入itemPath
来操作相关节点。由于节点的名称并不唯一,因此将节点名称作为识别属性是不可靠的,模型管理器提供了一个描述节点位置的识别属性——itemPath
,可以点击itemPath属性查看具体介绍。
除了通用控件方法以外,Tree控件还提供以下方法:
方法名 | 描述 |
---|---|
collapseAll | 折叠指定路径上的所有树节点。 |
getItem | 获取指定路径位置的树节点自动化对象。 |
findItem | 根据名称搜索目标树节点,返回匹配的节点或null 。 |
select | 选中指定位置的树节点。 |
childCount | 获取当前树的直系子节点的数量。 |
children | 获取当前树的直系子节点数组。 |
scrollTo | 滚动到目标树节点并展开到目标节点位置。 |
类型定义
export interface IJTree extends IJControl {
collapseAll(itemPath: ItemPath): Promise<void>;
getItem(itemPath: ItemPath): IJTreeItem;
findItem(text: string, options?: {exact?: boolean}): Promise<IJTreeItem | null>;
select(itemPath: ItemPath): Promise<IJTreeItem>;
childCount(): Promise<number>;
children(): Promise<IJTreeItem[]>;
scrollTo(itemPath: ItemPath): Promise<IJTreeItem>;
}
export type ItemPath = (number | string)[];
class JTree(JControl):
def collapseAll(itemPath: TypedDict) -> None
def getItem(itemPath: TypedDict) -> JTreeItem
def findItem(text: str, options: Optional[TypedDict]=None) -> JTreeItem
def select(itemPath: TypedDict) -> JTreeItem
def childCount() -> int
def children() -> List[JTreeItem]
def scrollTo(itemPath: TypedDict) -> JTreeItem
collapseAll(itemPath)
折叠指定路径上的所有树节点。
参数:
- itemPath:
ItemPath
类型,表示目标节点的位置。
返回值:
- 不返回任何值的异步方法。
示例代码:
// 折叠根节点下的所有子节点
await model.getTree("tree").collapseAll([0, 'rootNode']);
# 折叠根节点下的所有子节点
model.getTree("tree").collapseAll([0, 'rootNode'])
getItem(itemPath)
获取指定itemPath
位置的树节点对应的自动化对象。
参数:
- itemPath:
ItemPath
类型,表示节点的位置。
返回值:
IJTreeItem
类型,即TreeItem
控件的自动化对象。注意这是一个同步方法,不需要await
关键字。
示例代码:
// 获取根节点的自动化对象
const node = model.getTree("tree").getItem([0, 'rootNode']);
# 获取根节点的自动化对象
node = model.getTree("tree").getItem([0, 'rootNode'])
findItem(text, options?)
在树中根据名称搜索目标树节点,返回目标树节点的自动化对象。如果没有搜索到则返回null
。
参数:
- text:
string
类型,目标树节点的内容或文本。 - options: 可选参数
{exact?: boolean}
,表示是否进行精确匹配。
返回值:
Promise<IJTreeItem | null>
类型,异步返回树节点对象或null
。
示例代码:
// 精确搜索名为 'NodeName' 的节点
const node = await model.getTree("tree").findItem('NodeName', {exact: true});
# 精确搜索名为 'NodeName' 的节点
node = model.getTree("tree").findItem('NodeName', {"exact": True})
select(itemPath)
选中指定位置的树节点。
参数:
- itemPath:
ItemPath
类型,目标节点的位置。
返回值:
- 不返回任何值的异步方法。
示例代码:
// 选中根节点
await model.getTree("tree").select([0, 'rootNode']);
# 选中根节点
model.getTree("tree").select([0, 'rootNode'])
childCount()
获取当前树的所有直系子节点的数量。
返回值:
Promise<number>
类型,表示直系子节点的数量。
示例代码:
const count = await model.getTree("tree").childCount();
count = model.getTree("tree").childCount()
children()
获取当前树的所有直系子节点,以数组形式返回。
返回值:
Promise<IJTreeItem[]>
类型,返回TreeItem
类型的自动化对象数组。
示例代码:
const children = await model.getTree("tree").children();
children = model.getTree("tree").children()
scrollTo(itemPath)
滚动到目标树节点的位置,并返回此对象。如果目标位置未展开,会一直展开到目标节点可见为止。
参数:
- itemPath:
ItemPath
类型,目标节点的位置。
返回值:
Promise<IJTreeItem>
类型,返回滚动到的树节点对象。
示例代码:
// 滚动到子节点 'childNode'
const node = await model.getTree("tree").scrollTo([0, 'rootNode', 'childNode']);
# 滚动到子节点 'childNode'
const node = model.getTree("tree").scrollTo([0, 'rootNode', 'childNode'])
树节点控件: TreeItem
TreeItem
控件代表树中的各个节点,可以对其展开、折叠、选中或获取子节点等操作。
除了通用控件方法以外,TreeItem
控件还提供以下方法:
方法名 | 描述 |
---|---|
expand | 展开树节点。 |
expandState | 获取节点展开状态 |
collapse | 折叠树节点。 |
children | 获取当前树的直系子节点数组。 |
childCount | 获取当前树的直系子节点的数量。 |
select | 选中树节点。 |
selected | 获取树节点的选中状态。 |
类型定义
export interface IJTreeItem extends IJControl {
expand(): Promise<void>;
collapse(): Promise<void>;
expandState(): Promise<ExpandCollapseState>;
childCount(): Promise<number>;
children(): Promise<IJTreeItem[]>;
select(): Promise<void>;
selected(): Promise<boolean>;
}
export enum ExpandCollapseState {
collapsed = 0,
expanded = 1,
partiallyExpanded = 2,
leafNode = 3,
unknown = -1
}
class JTreeItem(JControl):
def expand() -> None
def collapse() -> None
def expandState() -> ExpandCollapseState
def childCount() -> int
def children() -> List[JTreeItem]
def select() -> None
def selected() -> bool
expand()
展开树节点,如果无法展开,则不会有任何效果。
返回值:
- 不返回任何值的异步方法。
示例代码:
// 展开名为 'temp' 的节点
await model.getTreeItem('temp').expand();
# 展开名为 'temp' 的节点
model.getTreeItem('temp').expand()
expandState()
获取节点展开状态。
返回值:
Promise<ExpandCollapseState>
类型,返回树节点的展开状态,有以下几种状态:
export enum ExpandCollapseState {
collapsed = 0,
expanded = 1,
partiallyExpanded = 2,
leafNode = 3,
unknown = -1
}
示例代码:
// 展开名为 'temp' 的节点
await model.getTreeItem('temp').expand();
# 展开名为 'temp' 的节点
model.getTreeItem('temp').expand()
collapse()
折叠树节点,如果无法折叠,则不会有任何效果。
返回值:
- 不返回任何值的异步方法。
示例代码:
// 折叠名为 'temp' 的节点
await model.getTreeItem('temp').collapse();
# 折叠名为 'temp' 的节点
model.getTreeItem('temp').collapse()
select()
选中树节点。如果节点不在可视范围内,会自动执行scrollIntoView()
来展开并滚动到该项所在的位置。
返回值:
- 不返回任何值的异步方法。
示例代码:
// 选中名为 'temp' 的节点
await model.getTreeItem('temp').select();
# 选中名为 'temp' 的节点
model.getTreeItem('temp').select()
selected()
获取树节点的选中状态,已选中为true
,未选中为false
。
返回值:
Promise<boolean>
类型,表示树节点是否已选中。
示例代码:
// 校验节点是否已选中
const isSelected = await model.getTreeItem('temp').selected();
assert.equal(isSelected, true);
# 校验节点是否已选中
isSelected = model.getTreeItem('temp').selected()
assert isSelected == True
childCount()
获取当前树节点的直系子节点数量。
返回值:
Promise<number>
类型,表示直系子节点的数量。
示例代码:
// 获取名为 'temp' 的节点的子节点数量
const count = await model.getTreeItem('temp').childCount();
# 获取名为 'temp' 的节点的子节点数量
count = model.getTreeItem('temp').childCount()
children()
获取当前树节点的直系子节点,以数组形式返回。
返回值:
Promise<IJTreeItem[]>
类型,返回TreeItem
类型的自动化对象数组。
示例代码:
// 获取名为 'temp' 的节点的所有子节点
const children = await model.getTreeItem('temp').children();
# 获取名为 'temp' 的节点的所有子节点
children = model.getTreeItem('temp').children()