如何获取SAP上下文菜单的功能代码?

时间:2015-05-21 07:11:03

标签: automated-tests sap silktest

我使用Silk4J(16.0.1.7470)自动化SAP应用程序的测试。有一棵树,我选择了一个节点。我可以使用SapTree.nodeContextMenu()以编程方式打开上下文菜单。

现在我想模拟其中一个上下文菜单项的点击。似乎可以使用SapTree.selectContextMenuItem()完成此操作。但是,此功能需要功能代码。

如何获取上下文菜单中提供的功能代码列表?

我尝试了SapTree.selectContextMenuItemByText(),但这导致了例外。

java.lang.RuntimeException: Error executing 'SelectContextMenuItemByText'. An unexpected COM exception occurred at SAP Frontend Server (The method got an invalid argument.). .
at com.borland.silktest.jtf.internal.Agent.convertException(Agent.java:294)
at com.borland.silktest.jtf.internal.Agent.invoke(Agent.java:394)
at com.borland.silktest.jtf.AbstractTestObject.invoke(AbstractTestObject.java:462)
at com.microfocus.silktest.jtf.sap.SapTree.selectContextMenuItemByText(SapTree.java:1650)
...

我也尝试了SapContextMenu.select(),但该方法没有参数,所以我想知道它会选择哪个项目。

1 个答案:

答案 0 :(得分:3)

使用SAP脚本记录器

获取功能代码的一种方法是使用SAP Script Recording and Playback记录动作(以德语截屏)。

SAP Script Recording and Playback

在记事本中打开录制的脚本并找到操作

session.findById(...).selectContextMenuItem "DELETE_RELATION"

"DELETE_RELATION"是您正在寻找的功能代码。

使用Silk4J

SAP中的上下文菜单是上下文菜单的集合。这可以解释没有参数的select()方法。这可能适用于叶子上下文菜单项。

要以编程方式转储所有函数代码,可以使用函数getName()并在所有上下文菜单中调用它。 getText()获取人类可读的文字。

List<SapContextMenu> menus = tree.getDesktop().findAll("//SapContextMenu");
for(SapContextMenu menu:menus){
    try{
        logger.debug("Function code: "+menu.getName());
        logger.debug("Displayed text: "+menu.getText());
        logger.debug("");
    }
    catch(Exception e){
        logger.debug(e); // Didn't happen for me
    }                                                        
}