树(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) -> JTreeItemcollapseAll(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() -> boolexpand()
展开树节点,如果无法展开,则不会有任何效果。
返回值:
- 不返回任何值的异步方法。
示例代码:
// 展开名为 '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 == TruechildCount()
获取当前树节点的直系子节点数量。
返回值:
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()