getColumnHeaders()、getColumnNames() 和 getColumnTitles() 之间的区别
Difference between getColumnHeaders(), getColumnNames() and getColumnTitles()
我正在使用 Silk4J 进行自动化测试。对于 SapTree [MicroFocus] class, there are the methods getColumnHeaders() [Microfocus], getColumnNames() [MicroFocus] and getColumnTitles() [MicroFocus].
它们的描述非常相似,我正在尝试了解不同之处。
到目前为止我发现了什么:
- 方法return 不同的结果。就我而言,它仅在第一个元素上有所不同,我不确定在更多情况下是否会有所不同。
这是我的树在 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
...
我试过:
- 我询问了 MicroFocus 支持,但答案是,这基本上是 SAP 自动化文档的副本
- 我得到了一份 SAP GUI Scripting API [SAP] 并查阅了 GuiTree class 的文档,但那个更糟糕。
那么,getColumnHeaders()、getColumnNames() 和getColumnTitles() 之间有什么区别?在什么情况下我需要哪种方法?这取决于树的类型吗?
此答案仅适用于 Silk4J,我没有尝试直接使用 SAP 脚本。
getColumnHeaders()
getColumnHeaders() returns 理论上可用的所有列的列表。其中一些可能已被用户通过列配置取消选择。即使未选中,此方法也会 returns 所有技术栏目名称,而不是屏幕上显示的人类可读名称。
列配置对话框中的一些复选框对应于树中的两列。在上面的屏幕截图中,Gültigkeitszeitraum
处的复选框同时触发了 ORG_BEGDA
和 ORG_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)中获取它:
我正在使用 Silk4J 进行自动化测试。对于 SapTree [MicroFocus] class, there are the methods getColumnHeaders() [Microfocus], getColumnNames() [MicroFocus] and getColumnTitles() [MicroFocus].
它们的描述非常相似,我正在尝试了解不同之处。
到目前为止我发现了什么:
- 方法return 不同的结果。就我而言,它仅在第一个元素上有所不同,我不确定在更多情况下是否会有所不同。
这是我的树在 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
...
我试过:
- 我询问了 MicroFocus 支持,但答案是,这基本上是 SAP 自动化文档的副本
- 我得到了一份 SAP GUI Scripting API [SAP] 并查阅了 GuiTree class 的文档,但那个更糟糕。
那么,getColumnHeaders()、getColumnNames() 和getColumnTitles() 之间有什么区别?在什么情况下我需要哪种方法?这取决于树的类型吗?
此答案仅适用于 Silk4J,我没有尝试直接使用 SAP 脚本。
getColumnHeaders()
getColumnHeaders() returns 理论上可用的所有列的列表。其中一些可能已被用户通过列配置取消选择。即使未选中,此方法也会 returns 所有技术栏目名称,而不是屏幕上显示的人类可读名称。
列配置对话框中的一些复选框对应于树中的两列。在上面的屏幕截图中,Gültigkeitszeitraum
处的复选框同时触发了 ORG_BEGDA
和 ORG_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)中获取它: