Как получить коды функций для контекстных меню SAP?

Я автоматизирую тесты нашего приложения SAP, используя Silk4J (16.0.1.7470). Есть дерево, в котором я выбрал узел. Я могу программно открыть контекстное меню с помощью 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(), но у этого метода нет параметра, поэтому интересно, какой элемент он выберет.


person Thomas Weller    schedule 21.05.2015    source источник


Ответы (1)


Использование средства записи сценариев SAP

Один из способов получить код функции — записать действие с помощью записи и воспроизведения сценария SAP (снимок экрана на немецком языке).

Запись и воспроизведение сценария SAP

Откройте записанный скрипт в блокноте и найдите действие

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
    }                                                        
}
person Thomas Weller    schedule 21.05.2015