【问题标题】:SWTBot test - Drag and Drop from tree to editorSWTBot 测试 - 从树拖放到编辑器
【发布时间】:2014-07-11 15:30:28
【问题描述】:

大家早上好(或分别下午或晚上),

我正在尝试构建一个 SWTBot 测试,将节点从树查看器拖到图表编辑器中(使用 Graphiti,不要认为这很重要)。要拖动的节点是在它自己的视图中,而不是在工具栏中,所以标准的做法是行不通的:

SWTBotGefEditor editor = gefBot.gefEditor(editorName);
editor.activateTool(functionName);
editor.drag(20, 20, 20, 20);

我还看到 TreeItem 有一个 dragAndDrop 函数,但除非我错了(完全可能),否则我认为只有在拖动到另一棵树时才有效。

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

【问题讨论】:

    标签: eclipse drag-and-drop eclipse-rcp gui-testing swtbot


    【解决方案1】:

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

    【讨论】:

    • 感谢您的建议。我确实深入研究了他们的代码,但找不到完全符合我需求的任何东西。并不意味着它不存在,只是我自己找不到它......最终使用反射,正如我将在我的后续帖子中指出的那样
    【解决方案2】:

    应该已经更新了一段时间,但不想让线程挂起,所以我会添加我的发现:

    我最终不得不使用反射从查看器中获取画布对象,然后能够将其传递给 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-21
      • 1970-01-01
      • 2013-08-10
      • 1970-01-01
      相关资源
      最近更新 更多