我正在使用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
...


我试过了:


我询问了MicroFocus支持,但答案是,这基本上是SAP自动化文档的副本
我得到了SAP GUI Scripting API [SAP]的副本,并查找了GuiTree类的文档,但情况更糟。


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

最佳答案

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

getColumnHeaders()

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



列配置对话框中的某些复选框对应于树中的两列。在上面的屏幕截图中,Gültigkeitszeitraum处的复选框同时触发了ORG_BEGDAORG_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)中获取它:

关于java - getColumnHeaders(),getColumnNames()和getColumnTitles()之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28873934/

10-10 07:53