我使用Silk4J自动化测试。对于SapTree [MicroFocus]类,有方法getColumnHeaders() [Microfocus],getColumnNames() [MicroFocus]和getColumnTitles() [MicroFocus]。
对它们的描述非常相似,我试图理解这些差异。
到目前为止我发现了什么:
这就是我的树在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
...
我试过了:
那么, getColumnHeaders(),getColumnNames()和getColumnTitles()之间的区别是什么?在哪种情况下我需要哪种方法?它取决于树的类型吗?
答案 0 :(得分:2)
这个答案仅适用于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
项填充到左侧。您无法以getColumnIndexFromName()
作为参数调用getColumnTitleFromName()
和null
。
示例输出:
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中的错误,因为它使用正确的属性名称从SAP脚本自动化(反编译的JAR)中获取它: