不久前应该已经更新了,但不想留下线索,所以我将添加我的发现:
最后,我不得不使用反射从查看器中获取画布对象,然后将其传递到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);