虚拟表格
当您需要操作位于同一虚拟控件下的多个文本数据时,虚拟表格对象(virtualTable)提供了一种高效的解决方案。通过虚拟表格对象,您可以像操作表格一样使用它。

添加虚拟表格对象
在模型管理器中创建虚控件之后,找到对象属性标签栏,点击添加属性,添加objectType属性,属性值选择Table,点击添加,就添加成功了。
还可以在创建虚拟控件时,绘制虚拟控件完成后选中表格图标再点击打勾图标,完成虚拟表格的创建。

返回控件操作标签栏就能调用virtualTable相关API。
通过这种方式,您可以避免单独操作每个文本对象,而是通过行列的方式直接访问所需的内容。例如:
- 点击特定单元格。
- 获取单元格的文本内容。
- 验证单元格文本的正确性。
- 在表格中搜索和比较数据。
使用示例
假设您正在测试一个包含多个联系人信息的应用,每个联系人的信息(如姓名、电话、邮箱等)以列表形式显示。通过添加文字表格对象,您可以轻松地验证列表中每一行的联系人信息,或者查找特定联系人的信息。
JavaScript
Python
let virtualTable = await model.getVirtual("ContactsList");
let contactInfo = await virtualTable.cellValue(1, 2); // 获取第1行第2列(假设为电话号码)的文本
console.log(`联系人电话: ${contactInfo}`);
// 执行其他文本验证或操作...virtualTable = model.getVirtual("ContactsList")
contactInfo = virtualTable.cellValue(1, 2) # 获取第1行第2列(假设为电话号码)的文本
print(f"联系人电话: {contactInfo}")
# 执行其他文本验证或操作...除了直接使用对象名调用虚拟表格外,您还可以通过描述模式获取虚拟表格对象并调用相关的API方法。
如果您通过绘制完虚拟控件后点击表格图标再点击打勾图标完成虚拟表格对象的创建,您可以在对象属性中看到该虚拟表格对象的标识属性里的type属性为Table。这可以用作您使用描述模式时的对象参数。

示例代码:
JavaScript
Python
// 使用描述模式必须通过父级Table控件获取级联的虚拟表格
// 获取虚拟表格对象后使用data()方法获取表格内数据
let data = await model.getTable("table_name").getVirtual({"type": "Table"}).data();
console.log(data);# 使用描述模式必须通过父级Table控件获取级联的虚拟表格
# 获取虚拟表格对象后使用data()方法获取表格内数据
data = model.getTable("table_name").getVirtual({"type": "Table"}).data()
print(data)虚拟表格对象的API
类型定义
JavaScript
Python
export interface Virtual {
clickCell(rowIndex: number, columnNameOrIndex: string | number): Promise<void>;
cellValue(rowIndex: number, columnNameOrIndex: string | number): Promise<string>;
columnName(index: number): Promise<string>;
columnHeaders(): Promise<string[]>;
columnCount(): Promise<number>;
data(): Promise<string[][]>;
rowCount(): Promise<number>;
rowData(rowIndex: number): Promise<string[]>;
}class Virtual(SyncBase):
def clickCell(rowIndex: int, columnNameOrIndex: Union[str, int]) -> None
def cellValue(rowIndex: int, columnNameOrIndex: Union[str, int]) -> str
def columnName(index: int) -> str
def columnHeaders() -> List[str]
def columnCount() -> int
def data() -> List[List[str]]
def rowCount() -> int
def rowData(rowIndex: int) -> List[str]操作方法
- clickCell(rowIndex: number, columnNameOrIndex: string | number)
- cellValue(rowIndex: number, columnNameOrIndex: string | number)
- columnName(index: number)
- columnHeaders()
- columnCount()
- data()
- rowCount()
- rowData(rowIndex: number)
data(): Promise<string[][]>
获取表格中的所有内容,并以二维数组的形式返回。
- 返回值:
Promise<string[][]>类型,即二维的字符串数组。
假如表格数据如下:
| 学号 | 姓名 | 性别 |
|---|---|---|
| 0001 | 小王 | 男 |
| 0002 | 小明 | 男 |
| 0003 | 小红 | 女 |
那么data()方法返回的数组如下:
[
['0001', '小王', '男'],
['0002', '小明', '男'],
['0003', '小红', '女']
]