0

我有一个带有 ViewPart 的 RCP 应用程序,该应用程序有一个带有一些操作的工具栏。系统将这些操作作为带有图标和工具提示的简单按钮放在工具栏上。

动作看起来像这样:

public class MyAction extends Action {

    public static final String TITLE = "My Action Tooltip";

    public MyAction() {
        super(TITLE, Activator.getImageDescriptor("icons/clock_edit.png"));
        setToolTipText(TITLE);
    }

    // ...
}

现在我正在尝试使用 SWTBot 调用按钮单击它们,如下所示:

SWTBotButton myButton = bot.buttonWithTooltip(MyAction.TITLE);
myButton.click();

如果我让 SWTBot 测试运行,我会收到找不到 Button 的错误消息:

org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException: Could not find widget matching: (of type 'Button' and with tooltip 'My Action Tooltip' and with style 'SWT.PUSH')
    at org.eclipse.swtbot.swt.finder.SWTBotFactory.waitUntilWidgetAppears(SWTBotFactory.java:362)
    at org.eclipse.swtbot.swt.finder.SWTBotFactory.widget(SWTBotFactory.java:309)
    at org.eclipse.swtbot.swt.finder.SWTBot.buttonWithTooltip(SWTBot.java:205)
    at org.eclipse.swtbot.swt.finder.SWTBot.buttonWithTooltip(SWTBot.java:193)

现在我想知道,Action 是否没有作为 SWT.PUSH 按钮放在工具栏上?或者它找不到它的原因是什么?

4

2 回答 2

0

SWTBot 可以找到工具栏上的按钮有点不同。我终于能够这样做:

List<SWTBotToolbarButton> items = view.getToolbarButtons();
for (SWTBotToolbarButton button : items) {
    if (MyAction.TITLE.equals(button.getToolTipText())) {
        button.click();
        break;
    }
}
于 2015-02-27T10:53:32.690 回答
0

尝试 bot.toolbarButtonWithTooltip(MyAction.TITLE).click(); 此外,您可以使用 EclipseSpy 视图来确定要处理的小部件的类型(窗口-显示视图-SWTBot 类别)

于 2015-03-05T16:13:10.803 回答