1

我正在使用 Silk4J 自动化测试。对于SapTree [MicroFocus]类,有方法getColumnHeaders( ) [Microfocus] 、getColumnNames() [MicroFocus]getColumnTitles() [MicroFocus]

它们的描述非常相似,我试图理解它们之间的差异。

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

  • 这些方法返回不同的结果。就我而言,它仅在第一个元素上有所不同,我不确定在更多情况下它是否会有所不同。

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

SAPTree 屏幕截图

这是名称和标题之间的区别 - 在我的情况下只是在第一列:

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() 有什么区别呢?在什么情况下我需要哪种方法?它取决于树的类型吗?

4

1 回答 1

2

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

获取列标题()

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

SAP GUI 列配置

列配置对话框中的某些复选框对应于树中的两列。在上面的屏幕截图中,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() 返回当前显示在树中的那些列的列表,即由用户通过列配置选择。

重要的是要知道:列名称列表然后用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

获取列标题()

Silk4J 中的 getColumnTitles() 返回与getColumnHeaders(). 这有点奇怪,因为该方法getColumnTitleFromName()返回屏幕上显示的人类可读文本,这表明它也getColumnTitles()应该这样做。

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

Silk4J 反编译 JAR

于 2015-03-05T09:12:01.427 回答