Java getColumnHeaders()、getColumnNames()和getColumnTitles()之间的差异

Java getColumnHeaders()、getColumnNames()和getColumnTitles()之间的差异,java,scripting,sap,silktest,Java,Scripting,Sap,Silktest,我正在使用Silk4J自动化测试。对于类,有方法和 对它们的描述非常相似,我试图理解它们的区别 到目前为止,我发现: 这些方法返回不同的结果。在我的例子中,它只在第一个元素中有所不同,我不确定它是否会在更多的情况下有所不同 这就是我的树在SAP GUI中的样子(称为列树): 这就是名称和标题之间的区别——在我的例子中,仅在第一列中: Column name: ZMAPP_STEXT Column header: HierarchyHeader Column name: ORG_OB

我正在使用Silk4J自动化测试。对于类,有方法和

对它们的描述非常相似,我试图理解它们的区别

到目前为止,我发现:

  • 这些方法返回不同的结果。在我的例子中,它只在第一个元素中有所不同,我不确定它是否会在更多的情况下有所不同
这就是我的树在SAP GUI中的样子(称为列树):

这就是名称和标题之间的区别——在我的例子中,仅在第一列中:

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
...
我试过:

  • 我询问了MicroFocus支持部门,但答案是,这基本上是SAP自动化文档的副本
  • 我得到了一份的副本并查阅了GuiTree类的文档,但那一个更糟糕

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

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

getColumnHeaders()

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

“列配置”对话框中的某些复选框对应于树中的两列。在上面的屏幕截图中,
Gültigkeitszeitraum
处的复选框触发了
ORG_BEGDA
ORG_ENDDA
列。因此,树中的列数与列配置中的复选框数不是1:1

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

要与其他方法进行比较的列标题示例:

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()返回当前显示在树中的列的列表,即用户通过列配置选择的列

重要的是要知道:列名列表的左侧填充有
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()返回与
getColumnHeaders()
完全相同的结果。这有点奇怪,因为方法
getColumnTitleFromName()
返回屏幕上显示的人类可读文本,这表明
getColumnTitles()
也应该这样做

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