树(Tree)

本章节介绍针对树控件(Tree)及其节点(TreeItem)的控件方法。表格列出了每个API的链接及简要描述,以便快速查找相关内容。 针对树控件以及树中的节点,CukeTest提供了TreeTreeItem两个控件。Tree控件代表整棵树,而TreeItem代表树中的各个节点。

树状视图控件: Tree

Tree控件代表整棵树,主要通过传入itemPath来操作相关节点。由于节点的名称并不唯一,因此将节点名称作为识别属性是不可靠的,模型管理器提供了一个描述节点位置的识别属性——itemPath,可以点击itemPath属性查看具体介绍。

除了通用控件方法以外,Tree控件还提供以下方法:

方法名 描述
collapseAll 折叠指定路径上的所有树节点。
getItem 获取指定路径位置的树节点自动化对象。
findItem 根据名称搜索目标树节点,返回匹配的节点或null
select 选中指定位置的树节点。
childCount 获取当前树的直系子节点的数量。
children 获取当前树的直系子节点数组。
scrollTo 滚动到目标树节点并展开到目标节点位置。

类型定义

JavaScript
Python
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类型,表示目标节点的位置。

返回值:

  • 不返回任何值的异步方法。

示例代码:

JavaScript
Python
// 折叠根节点下的所有子节点
await model.getTree("tree").collapseAll([0, 'rootNode']);
# 折叠根节点下的所有子节点
model.getTree("tree").collapseAll([0, 'rootNode'])

getItem(itemPath)

获取指定itemPath位置的树节点对应的自动化对象。

参数:

  • itemPath: ItemPath类型,表示节点的位置。

返回值:

  • IJTreeItem类型,即TreeItem控件的自动化对象。注意这是一个同步方法,不需要await关键字。

示例代码:

JavaScript
Python
// 获取根节点的自动化对象
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

示例代码:

JavaScript
Python
// 精确搜索名为 'NodeName' 的节点
const node = await model.getTree("tree").findItem('NodeName', {exact: true});
# 精确搜索名为 'NodeName' 的节点
node = model.getTree("tree").findItem('NodeName', {"exact": True})

select(itemPath)

选中指定位置的树节点。

参数:

  • itemPath: ItemPath类型,目标节点的位置。

返回值:

  • 不返回任何值的异步方法。

示例代码:

JavaScript
Python
// 选中根节点
await model.getTree("tree").select([0, 'rootNode']);
# 选中根节点
model.getTree("tree").select([0, 'rootNode'])

childCount()

获取当前树的所有直系子节点的数量。

返回值:

  • Promise<number>类型,表示直系子节点的数量。

示例代码:

JavaScript
Python
const count = await model.getTree("tree").childCount();
count = model.getTree("tree").childCount()

children()

获取当前树的所有直系子节点,以数组形式返回。

返回值:

  • Promise<IJTreeItem[]>类型,返回TreeItem类型的自动化对象数组。

示例代码:

JavaScript
Python
const children = await model.getTree("tree").children();
children = model.getTree("tree").children()

scrollTo(itemPath)

滚动到目标树节点的位置,并返回此对象。如果目标位置未展开,会一直展开到目标节点可见为止。

参数:

  • itemPath: ItemPath类型,目标节点的位置。

返回值:

  • Promise<IJTreeItem>类型,返回滚动到的树节点对象。

示例代码:

JavaScript
Python
// 滚动到子节点 '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 获取树节点的选中状态。

类型定义

JavaScript
Python
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()

展开树节点,如果无法展开,则不会有任何效果。

返回值:

  • 不返回任何值的异步方法。

示例代码:

JavaScript
Python
// 展开名为 'temp' 的节点
await model.getTreeItem('temp').expand();
# 展开名为 'temp' 的节点
model.getTreeItem('temp').expand()

expandState()

获取节点展开状态。

返回值:

  • Promise<ExpandCollapseState>类型,返回树节点的展开状态,有以下几种状态:

JavaScript
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()

折叠树节点,如果无法折叠,则不会有任何效果。

返回值:

  • 不返回任何值的异步方法。

示例代码:

JavaScript
Python
// 折叠名为 'temp' 的节点
await model.getTreeItem('temp').collapse();
# 折叠名为 'temp' 的节点
model.getTreeItem('temp').collapse()

select()

选中树节点。如果节点不在可视范围内,会自动执行scrollIntoView()来展开并滚动到该项所在的位置。

返回值:

  • 不返回任何值的异步方法。

示例代码:

JavaScript
Python
// 选中名为 'temp' 的节点
await model.getTreeItem('temp').select();
# 选中名为 'temp' 的节点
model.getTreeItem('temp').select()

selected()

获取树节点的选中状态,已选中为true,未选中为false

返回值:

  • Promise<boolean>类型,表示树节点是否已选中。

示例代码:

JavaScript
Python
// 校验节点是否已选中
const isSelected = await model.getTreeItem('temp').selected();
assert.equal(isSelected, true);
# 校验节点是否已选中
isSelected = model.getTreeItem('temp').selected()
assert isSelected == True

childCount()

获取当前树节点的直系子节点数量。

返回值:

  • Promise<number>类型,表示直系子节点的数量。

示例代码:

JavaScript
Python
// 获取名为 'temp' 的节点的子节点数量
const count = await model.getTreeItem('temp').childCount();
# 获取名为 'temp' 的节点的子节点数量
count = model.getTreeItem('temp').childCount()

children()

获取当前树节点的直系子节点,以数组形式返回。

返回值:

  • Promise<IJTreeItem[]>类型,返回TreeItem类型的自动化对象数组。

示例代码:

JavaScript
Python
// 获取名为 'temp' 的节点的所有子节点
const children = await model.getTreeItem('temp').children();
# 获取名为 'temp' 的节点的所有子节点
children = model.getTreeItem('temp').children()

results matching ""

    No results matching ""