Eclipse SWTBot测试-从树拖放到编辑器

Eclipse SWTBot测试-从树拖放到编辑器,eclipse,drag-and-drop,eclipse-rcp,gui-testing,swtbot,Eclipse,Drag And Drop,Eclipse Rcp,Gui Testing,Swtbot,早上好(或分别是下午或晚上) 我正在尝试构建一个SWTBot测试,该测试将节点从树查看器拖到图表编辑器中(使用Graphiti,不认为这很重要)。要拖动的节点在其自己的视图中,而不是在工具栏中,因此标准的拖动方式不起作用: SWTBotGefEditor editor = gefBot.gefEditor(editorName); editor.activateTool(functionName); editor.drag(20, 20, 20, 20); 我还看到TreeItem有一个dra

早上好(或分别是下午或晚上)

我正在尝试构建一个SWTBot测试,该测试将节点从树查看器拖到图表编辑器中(使用Graphiti,不认为这很重要)。要拖动的节点在其自己的视图中,而不是在工具栏中,因此标准的拖动方式不起作用:

SWTBotGefEditor editor = gefBot.gefEditor(editorName);
editor.activateTool(functionName);
editor.drag(20, 20, 20, 20);
我还看到TreeItem有一个dragAndDrop函数,但除非我错了(完全可能),否则我认为只有当拖动到另一棵树时,它才起作用


有没有办法直接从树拖动到图表编辑器?

有许多拖动方案尚未在SWTBot中实现。我不知道你的案子是否是他们的一部分。我知道我必须创建自己的实用程序来拖动表行,否则会使用一个空的替换方法。
因此,我认为您应该深入研究SWTBot代码,看看是否找到了这样一个空方法。

应该在不久前更新此方法,但不想留下挂起的线程,因此我将添加我的发现:

我最终不得不使用反射从查看器中获取画布对象,然后才能将其传递到SWTBot用于SWTBotTreeItems的dragAndDrop()方法中。虽然你不能给它x/y坐标(就像你从调色板中拿出来的坐标一样),但它仍然不理想

SWTBotView view = gefBot.viewByTitle("My View");
SWTBotTree tree = view.bot().tree();
SWTBotTreeItem treeItem = tree.expandNode("Parent Node Name", targetNodeName);

SWTBotGefViewer viewer = editor.getSWTBotGefViewer();
SWTBotGefFigureCanvas canvas = null;

for (Field f : viewer.getClass().getDeclaredFields()) {
    if ("canvas".equals(f.getName())) {
        f.setAccessible(true);
        try {
            canvas = (SWTBotGefFigureCanvas) f.get(viewer);
        } catch (IllegalArgumentException e) {
            e.printStackTrace(); 
        } catch (IllegalAccessException e) {
            e.printStackTrace(); 
        }
    }
}

Assert.assertNotNull(canvas);
treeItem.dragAndDrop(canvas);

谢谢你的建议。我确实深入研究了他们的代码,但找不到任何完全符合我需要的东西。并不意味着它不在那里,只是我自己找不到它。。。最终使用了反射,我将在后续文章中指出