getColumnHeaders()、getColumnNames() 和 getColumnTitles() 之间的区别

Difference between getColumnHeaders(), getColumnNames() and getColumnTitles()

我正在使用 Silk4J 进行自动化测试。对于 SapTree [MicroFocus] class, there are the methods getColumnHeaders() [Microfocus], getColumnNames() [MicroFocus] and getColumnTitles() [MicroFocus].

它们的描述非常相似,我正在尝试了解不同之处。

到目前为止我发现了什么:

这是我的树在 SAP GUI 中的样子(称为列树):

这是 name 和 header 之间的区别 - 在我的例子中只是在第一列中:

Column name:   ZMAPP_STEXT
Column header: HierarchyHeader
Column name:   ORG_OBJID
Column header: ORG_OBJID
Column name:   ORG_SHORT
Column header: ORG_SHORT
Column name:   ORG_BEGDA
Column header: ORG_BEGDA
Column name:   ORG_ENDDA
Column header: ORG_ENDDA
...

我试过:

那么,getColumnHeaders()、getColumnNames() 和getColumnTitles() 之间有什么区别?在什么情况下我需要哪种方法?这取决于树的类型吗?

此答案仅适用于 Silk4J,我没有尝试直接使用 SAP 脚本。

getColumnHeaders()

getColumnHeaders() returns 理论上可用的所有列的列表。其中一些可能已被用户通过列配置取消选择。即使未选中,此方法也会 returns 所有技术栏目名称,而不是屏幕上显示的人类可读名称。

列配置对话框中的一些复选框对应于树中的两列。在上面的屏幕截图中,Gültigkeitszeitraum 处的复选框同时触发了 ORG_BEGDAORG_ENDDA 列。因此树中的列数与列配置中的复选框数 1:1 无关。

用户无法删除第一列,通过此方法报告为 HierarchyHeader。对话框中没有复选框。

示例列 headers 与其他方法进行比较:

HierarchyHeader // this seems to be a fixed text for the first column
COL2 // here: ORG_OBJID for the Id column 
COL3
COL4
COL5 // here: ORG_SHORT for the "Kürzel" column
...
COL14

getColumnNames()

getColumnNames() returns 当前显示在树中的那些列的列表,即由用户通过列配置选择。

重要提示:列名称列表随后会在左侧填充 null 项。您不能使用 null 作为参数调用 getColumnIndexFromName()getColumnTitleFromName()

示例输出:

COL1 // corresponds to HierarchyHeader but is not the string "HierarchyHeader"
COL2 // here: ORG_OBJID
COL5 // here: ORG_SHORT
COL9 // here ORG_BEGDA
COL10 // here: ORG_ENDDA
null
...
null

getColumnTitles()

Silk4J 中的 getColumnTitles() returns 与 getColumnHeaders() 完全相同的结果。这有点奇怪,因为方法 getColumnTitleFromName() returns 显示在屏幕上的人类可读文本,这表明 getColumnTitles() 也应该这样做。

这似乎不是 Silk4J 中的错误,因为它使用正确的 属性 名称从 SAP 脚本自动化(反编译的 JAR)中获取它: